检查类成员是否是类对象

时间:2011-07-19 17:24:42

标签: java reflection

我有一个类,其成员是其他成员中的另一个类对象。我想知道如何确定这个字段是否是java类(用户定义)。 也就是说,我有这样的事情: 用户传递java类的名称。如果包中包含一个这个名称的类,那么我将获得该类的所有声明字段,并对那些作为类对象的数据成员执行DFS操作。

class A {
  private String c;
  private B b;
}

class B {
  private int d;
  private String f;
}

所以现在在A中,我只需要选择B并访问B的成员。 怎么做?

感谢。

3 个答案:

答案 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
}