我有一个类,其成员是其他成员中的另一个类对象。我想知道如何确定这个字段是否是java类(用户定义)。 也就是说,我有这样的事情: 用户传递java类的名称。如果包中包含一个这个名称的类,那么我将获得该类的所有声明字段,并对那些作为类对象的数据成员执行DFS操作。
class A {
private String c;
private B b;
}
class B {
private int d;
private String f;
}
所以现在在A中,我只需要选择B并访问B的成员。 怎么做?
感谢。
答案 0 :(得分:1)
还有一个技巧。但结果严格依赖于类加载器。它可以帮助您检查类是否是自定义用户类。尝试运行此代码以确定jar的位置:
ProtectionDomain domain = allDeclaredFields[i].getClass().getProtectionDomain();
System.out.println("domain: " + domain);
CodeSource codeSource = domain.getCodeSource();
if(codeSource != null) {
System.out.println("location: " + codeSource.getLocation());
} else {
System.out.println("null location, probably JRE class");
}
答案 1 :(得分:0)
您将要使用Java反射。有关详细信息,请参阅http://download.oracle.com/javase/tutorial/reflect/index.html(点击成员,应该是您需要的)
答案 2 :(得分:0)
如果我正确得到了你的问题,那你就试图找出一个对象是否属于一个类。有一个名为instanceof的java运算符来检查它
if(b instanceof B){
//b is an object of B
}