回覆列表
-
1 # 從零跟我學Java
-
2 # 淺析架構
非私有方法間接訪問
既然是私有屬性就不建議直接訪問的,一般會提供方法來訪問私有屬性,這樣可以在方法中對屬性的訪問做一些控制。
反射直接訪問當然也可以透過反射來直接訪問。
我們準備一個包含私有屬性的類
然後透過反射來訪問屬性,記得一定要加aField.setAccessible(true);這句程式碼,不然就不能訪問私有屬性。
不加aField.setAccessible(true);
加了aField.setAccessible(true);
-
3 # TonyDeng
應該考慮的問題是,你這個屬性在邏輯上屬於私有還是公開,邏輯上私有的東西,你用什麼技巧去訪問它都是錯誤的做法。
面向物件不是玩越獄語法,是講邏輯。如果語言提供了這類(越獄)手段,那麼它的嚴密性是有問題了。C++的友元被人詬病,其他語言也不採納,原因就在這裡。
主要有兩種方式:
第一種方式
在這個私有屬性的類中為該屬性提供get和set方法。
第二針方式
如果不能提供get和set方法就用反射來獲取,Java中說的封裝可以被反射打破。