gpt4 book ai didi

java - 如何从匿名类中获取原始类? java

转载 作者:行者123 更新时间:2023-11-30 06:05:58 25 4
gpt4 key购买 nike

我不知道如何获取定义匿名内部类的原始抽象类或接口(interface)。

例如:

public static void main(String[] args) {
Object obj = new Runnable() {

@Override
public void run() {
}
};

System.out.println(obj.getClass());
System.out.println(obj.getClass().getSuperclass()); //Works for abstract classes only
}

输出:

class my.package.MyClass$1
class java.lang.Object

如何获得原始类? (在本例中为 Runnable.class)

最佳答案

感谢您的帮助!没有人真正完整地回答我的问题,所以我决定结合不同的答案来获得这个全面的解决方案。

public static Class<?> getOriginalClass(Object obj) {
Class<?> cls = obj.getClass();
if (cls.isAnonymousClass()) {
return cls.getInterfaces().length == 0 ? cls.getSuperclass() : cls.getInterfaces()[0];
} else {
return cls;
}
}

缩短:

public static Class<?> getOriginalClass(Object obj) {
Class<?> cls = obj.getClass();
return cls.isAnonymousClass()
? cls.getInterfaces().length == 0 ? cls.getSuperclass() : cls.getInterfaces()[0]
: cls;
}

关于java - 如何从匿名类中获取原始类? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45221686/

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