gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:12:40 25 4
gpt4 key购买 nike

我有一个如下所示的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com