检查类成员是否为类对象



我有一个类,它的成员是其他成员中的另一个类对象。我想知道如何确定该字段是否为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
}

相关内容

  • 没有找到相关文章

最新更新