【发布时间】:2011-07-20 07:50:30
【问题描述】:
我有一个类,其成员是其他成员中的另一个类对象。我想知道如何确定这个字段是否是一个java类(用户定义的)。 也就是说,我有这样的事情: 用户传递 java 类的名称。如果包中包含该名称的类,那么我将获取该类的所有声明字段,并对作为类对象的那些数据成员执行 DFS 类型的操作。
class A {
private String c;
private B b;
}
class B {
private int d;
private String f;
}
所以现在在 A 中,我只需要选择 B 并访问 B 的成员。 如何做到这一点?
谢谢。
【问题讨论】:
-
是否有区分您感兴趣的课程和您想忽略的课程的标准?比如包名?
-
我不知道你到底想做什么,但听起来有些……可疑。也许你应该解释一下大局目标,你可能会发现比处理包等更好的解决方案......
-
好的。所以我发现这样做很有效。 if(allDeclaredFields[i].getType().getPackage() == null && !allDeclaredFields[i].getType().isPrimitive()) { 类 thisClass = allDeclaredFields[i].getClass(); }
-
我发现在 A 中选择 B 因为 String 的包是 java.lang 并且对于原始类型(我不想选择)我做 !isPrimitive()
-
字符串呢?它们不是原语,但您也想跳过它们,不是吗,以及所有标准 Java 库类型?
标签: java reflection