D****6 发帖数: 278 | 1 public class A {
private static class B {
public static final String password = "1234567";
}
}
怎样获取password? 如果B是个Field就好办了,就算是private也可以用
field.setAccessble(true);
可是对于private member class好像就没什么办法了?? |
g**e 发帖数: 6127 | 2 call getDeclaredClasses() to get a list of all member classes, including
private static memeber class.
find class B and call getDeclaredFields to get password
【在 D****6 的大作中提到】 : public class A { : : private static class B { : public static final String password = "1234567"; : } : } : 怎样获取password? 如果B是个Field就好办了,就算是private也可以用 : field.setAccessble(true); : 可是对于private member class好像就没什么办法了??
|
D****6 发帖数: 278 | 3 这样不行.你可以得到field, 但是得不到value, 会有Exception....
【在 g**e 的大作中提到】 : call getDeclaredClasses() to get a list of all member classes, including : private static memeber class. : find class B and call getDeclaredFields to get password
|
y***y 发帖数: 224 | 4 可以的啊,试试 f.get(B.password)
f是你拿到的Field. |
x*****p 发帖数: 1707 | 5 Class c = A.class.getDeclaredClasses()[0];
Field f = c.getDeclaredField("password");
System.out.println(f.get(null)); |
r***y 发帖数: 4379 | 6 Class _class = A.class.getDeclaredClasses()[0];
Field _field = _class.getDeclaredFields()[0];
try {
System.out.println((_field.get(null)).toString());
} catch (IllegalAccessException e) {
e.printStackTrace();
}
【在 D****6 的大作中提到】 : public class A { : : private static class B { : public static final String password = "1234567"; : } : } : 怎样获取password? 如果B是个Field就好办了,就算是private也可以用 : field.setAccessble(true); : 可是对于private member class好像就没什么办法了??
|
r***y 发帖数: 4379 | 7 或者这样写更清楚点:
Class _class = (new A()).getClass().getDeclaredClasses()[0];
【在 D****6 的大作中提到】 : public class A { : : private static class B { : public static final String password = "1234567"; : } : } : 怎样获取password? 如果B是个Field就好办了,就算是private也可以用 : field.setAccessble(true); : 可是对于private member class好像就没什么办法了??
|
g*****i 发帖数: 2162 | 8 Java Reflection 一般fresh 面试需要准备吗? |