我有一个类,它的成员是其他成员中的另一个类对象。我想知道如何确定该字段是否为java类(用户定义)。也就是说,我有这样的东西:用户传递java类的名称。如果包包含这个名称的类,那么我将获得这个类的所有声明字段,并对这些作为类对象的数据成员执行类似DFS的操作。
class A {
private String c;
private B b;
}
class B {
private int d;
private String f;
}
那么现在在A中,我只需要选择B并访问B的成员。怎么做呢?
谢谢。
还有一个技巧。但是结果严格依赖于类加载器。它可以帮助您检查一个类是否是自定义用户类。试着运行下面的代码来确定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");
}
您将需要使用Java反射。查看http://download.oracle.com/javase/tutorial/reflect/index.html获取更多信息(点击成员,应该是您需要的)
如果我正确地得到了你的问题,你正试图找到一个对象是否属于一个类。有一个叫做instanceof的java操作符来检查
if(b instanceof B){
//b is an object of B
}