[英]How can I get an instance of non-named inner class by Java reflection?
编写如下示例代码:
interface DisplayListener {
public void display();
}
class Outer {
public void prepare() {
register(new DisplayLitener() {
public void display() { /* do something */ }
});
}
public void print() {
// TODO: print all instances of DisplayerListener
}
}
我尝试了一种使用 getFields() 和 getDeclaredFields() 的方法。 未找到预期结果。
任何机构都可以通过 Java 反射找到一种方法来执行由 TODO 标记的执行?
非常感谢。
当你写
new DisplayListener() {
public void display() {
...
}
}
您正在声明一个新的匿名内部 class 实现 DisplayListener 并创建它的实例。 因此,在这种情况下,反思对您没有帮助。 上面的语句只是创建了一个普通的 java object ,您可以将其保存在列表中,如下所示:
public class Outer {
List<DisplayListener> list = new ArrayList<>();
public void prepare() {
register(new DisplayListener() {
@Override
public void display() { /* do something */ }
});
}
void register(DisplayListener displayListener) {
list.add(displayListener);
}
public void print() {
System.out.println(list);
}
public static void main(String[] args) {
Outer o = new Outer();
o.prepare();
o.prepare();
o.print();
}
}
此示例打印“[Outer$1@5ca881b5, Outer$1@24d46ca6]”。 class Outer$1 表示匿名内部 class,我们在列表中有 2 个实例。 "
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.