[英]accessing private member of member class
我有一個A類,有一個私人成員int myMember。 B類和A類的私有成員myA;
那是:
public class A{
private int myMember;
...
}
public class B{
private A myA;
}
我希望能夠訪問:
B.myA.myMember;
但是似乎不能,因為myMember在A中是私有的。事實是,出於練習的目的,我需要將A定義為私有(這也包括它不能受到保護)。 有沒有解決的辦法?
謝謝。
public class A {
private int myMember;
public int getMyMember() {
return myMember;
}
public void setMyMember(int myMember) {
this.myMember = myMember;
}
}
public class B{
private A myA;
public B() {
myA = new A();
myA.setMyMember(0);
int a = myA.getMyMember();
}
}
使用吸氣劑:
public class A {
private int myMember;
public getMyNumber() {
return myNumber;
}
}
public class B {
private A myA;
public A getA() {
return myA;
}
}
所以現在您可以編寫代碼:
B b = new B();
b.getA().getMyMember();
既然您已經聲明不能創建更多的公共方法,也就是getter,那么可以使用反射...
public class A{
private int myMember;
...
}
public class B{
private A myA;
private int get(){
try {
Field field = myA.getClass().getDeclaredField("myMember");
field.setAccessible(true);
return (int) field.get(myA);
catch (Exception e){
//Something went wrong, the field doesn't exist or a security exception
return null; //or return some "error number" like -10
}
}
}
如果您可以將私有字段聲明為靜態 字段 ,則可能會發生以下情況:
public class A {
private int myMember;
}
public class B {
public static void main (String[] args) {
int myMember = new A() {
public int getPrivate() {
return myMember;
}
}.getPrivate();
System.out.print("\n\t Id : " + myMember);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.