gpt4 book ai didi

java - 获取匿名类或内部类的父类(super class)

转载 作者:行者123 更新时间:2023-12-01 16:38:50 28 4
gpt4 key购买 nike

如何获取匿名类的父类(super class):

 Runnable r = new Runnable() {
@Override
public void run() {
System.out.println(this.getClass().getSuperclass());
}
};

这会打印 java.lang.Object 。因为getClass()返回EnclosingClass$1 .

System.out.println(r.getClass()); // class test.ClassTest$1
System.out.println(r.getClass().getSuperclass()); // class java.lang.Object
System.out.println(Runnable.class.isAssignableFrom(r.getClass())); // true
System.out.println(Runnable.class.isInstance(r)); // true

(所有这些方法都是 native 的)

那么有没有办法获取匿名类的父类(super class)呢?看来这是在运行时已知的。对于上面的例子我想获得 Runnable 。顺便说一下,内部类也是如此 - 如果你定义 class Foo implements Runnable我没有找到获取 Runnable 的方法

这很重要的原因是某些框架可能依赖getClass().getSuperclass()看来您在使用匿名类和内部类时应该小心。

最佳答案

对于本例,Runnable 是一个接口(interface),可以通过 getInterfaces 获取。在匿名类扩展基类的情况下,getSuperclass() 应该可以正常工作。

关于java - 获取匿名类或内部类的父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6271928/

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