Redian新闻
>
有熟悉Java Reflection的吗?
avatar
有熟悉Java Reflection的吗?# JobHunting - 待字闺中
D*6
1
public class A {

private static class B {
public static final String password = "1234567";
}
}
怎样获取password? 如果B是个Field就好办了,就算是private也可以用
field.setAccessble(true);
可是对于private member class好像就没什么办法了??
avatar
g*e
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好像就没什么办法了??

avatar
D*6
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

avatar
y*y
4
可以的啊,试试 f.get(B.password)
f是你拿到的Field.
avatar
x*p
5
Class c = A.class.getDeclaredClasses()[0];
Field f = c.getDeclaredField("password");
System.out.println(f.get(null));
avatar
r*y
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好像就没什么办法了??

avatar
r*y
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好像就没什么办法了??

avatar
g*i
8
Java Reflection 一般fresh 面试需要准备吗?
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。