【问题标题】:Get the reference to the class object of an anonymous inner class [duplicate]获取对匿名内部类的类对象的引用[重复]
【发布时间】:2015-06-16 11:02:31
【问题描述】:

Java 中如何获取匿名内部类的类对象的引用?

对于非匿名类,它使用ClassName.class 完成。

【问题讨论】:

  • 什么是匿名类的引用? (您的意思是对代表匿名类的Class 对象的引用?)
  • 可以被<outerclassname>.this使用
  • 请仔细阅读,OP不希望引用外部类,而是in外部类。
  • 匿名类接口不是内联实现的吗? Like Interface i = new Interface() { //class impl 在这里};因此,您在创建它们时已经有了参考。
  • 我敢打赌这是一些谈话的一部分。抛开上下文,很不清楚他想从你那里得到什么。

标签: java anonymous-class


【解决方案1】:

如果您要求对匿名类的引用,您可以在此处使用匿名类的 java.lang.Class 实例对象来引用匿名类。

如果将匿名类实例分配给变量obj,则可以使用obj.getClass() 引用该类。该示例使用Object,但可以使用任何非final 的类和任何接口。

Object obj = new Object() {

};

obj.getClass(); // Reference to the anonymous class

您也可以这样做,而无需显式创建像 obj 这样的变量

Button b = ...;
b.addActionListener(new ActionListener() {
    ....
}); 

ActionListener[] listeners = b.getActionListeners();
for (ActionListener listener : listeners) {
    System.out.println(listener.getClass());  // Prints the reference to the class
}

如果不能使用对“匿名”类型的对象的引用(至少通过反射),则不能这样做。

【讨论】:

  • Anonymous 是什么?我在 JDK javadoc 中没有看到它
  • 匿名是任何接口...这里只是一个名字...可以是Runnable、Collection、List或者你喜欢的任何东西
  • 我编辑答案更准确
  • @DavideLorenzoMARINO 请向我解释“如果不能使用对‘匿名’类型的对象的引用(至少通过反射),你就不能这样做。” ,所以我可以接受你的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多