java - 判断一个类是否是另一个类的字段

标签 java class object

我有一个如下所示的 java 类:

public class MainClass {

  public static class InnerClass1 extends SomeClass {
    ...
  }

  public static class InnerClass2 extends SomeClass {
    ...
  }
}

在运行时,有没有办法检查作为 InnerClass1 实例的对象并知道它是 MainClass 上的字段?我知道我可以向 MainClass 添加一个静态数组,其中包含其 SomeClass 字段的列表,但我想要一些更具编程动态性的东西。像这样的事情:

MainClass.InnerClass1 object1 = someKindOfFactory.getObject();
BigDecimal someNumber = new BigDecimal("45.77");

if (object1.comesFrom(MainClass.class)) {
  LOG.debug("Object is from MainClass");
} else {
  LOG.debug("Object comes from somewhere else");
}

if (someNumber.comesFrom(MainClass.class)) {
  LOG.debug("Object is from MainClass");
} else {
  LOG.debug("Object comes from somewhere else");
}

结果:

DEBUG: Object is from MainClass
DEBUG: Object comes from somewhere else 

最佳答案

很难准确说出您想要实现的目标,但 Class.getEnlookingClass() 可能会在这里帮助您:

MainClass.InnerClass1 object1 = someKindOfFactory.getObject();
BigDecimal someNumber = new BigDecimal("45.77");

if (object1.getClass().getEnclosingClass() == MainClass.class) {
  LOG.debug("Object is from MainClass");
} else {
  LOG.debug("Object comes from somewhere else");
}

if (someNumber.getClass().getEnclosingClass() == MainClass.class) {
  LOG.debug("Object is from MainClass");
} else {
  LOG.debug("Object comes from somewhere else");
}

在本例中,如果 object1InnerClass1 的实例,则 object1.getClass().getEnlookingClass() == MainClass.class 为 true直接,但如果 object1 是在其他地方声明的 InnerClass1 的子类,则为 false

关于java - 判断一个类是否是另一个类的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19251239/

相关文章:

java - 盒子 API Java : How can I move a file into another folder?

java - 使用 java vertx 网络服务器提供单页 react 应用程序

java - 使用父类(super class)表中类的方法 (Java)

ios - 如何从 Cloud Firestore 上的对象检索值? swift

java - Spark 是否在其集群中维护哈希函数?

java - 如何像javascript一样设置java对象属性

java - 通过后退按钮从其他 Activity 更新 Recyclerview onResume 的一项的正确方法

c++ - 我是否必须将非标准库包含到 C++ 中的类定义中?

java - 使用静态类作为存储

Ruby - 按值传递