java - Java 中未实例化的匿名类

标签 java anonymous-class

我写 Java 已经大约 6 年了,所以请原谅生锈。

我正在使用一个库方法,该方法要求我将 Class 对象传递给它。由于我必须动态调用此方法多次,每次使用略有不同的 Class 参数,所以我想向它传递一个匿名类。

但是,到目前为止我能找到的所有文档/教程都只讨论实例化匿名类,e.g. :

new className(optional argument list){classBody}

new interfaceName(){classBody}

我可以定义一个匿名类而不实例化它吗?或者,也许更清楚,我可以为匿名类创建一个 Class 对象吗?

最佳答案

不幸的是,您无法避开此处的实例化。但是,您可以将其设置为空操作:

foo((new Object() { ... }).getClass());

当然,如果您必须派生自某个在构造函数中执行某些操作的类,则这可能不是一个选项。

编辑

您的问题还说您希望“每次使用略有不同的 Class 参数”调用 foo。上面的方法不会这样做,因为仍然会有一个匿名内部类定义,即使您将 new 表达式放入循环中也是如此。因此,与命名类定义相比,它不会真正给您带来任何好处。特别是,如果您尝试这样做来捕获某些局部变量的值,foo 将使用传递给的 Class 对象创建匿名类的新实例它不会捕获它们。

关于java - Java 中未实例化的匿名类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1182832/

相关文章:

c# - Linq Lambda 从聚合中获取两个属性作为字符串

java - 西蒙说按下按钮后按钮颜色不会恢复正常

java - Concat Publishers 与 Reracor 但处理元素不同

java - 访问匿名内部类变量

java - 在 Intellij Idea 中自动将所有匿名内部类替换为 lambda

java - 为什么在实例初始值设定项内不允许递增 (`x++;` )但未声明的字段,但如果包装到匿名类中则可以?

java - JAXB:将无效的 xml 文档解码为对象

java - 静态工厂方法每次调用时都会创建一个新对象

java - 开源 Linux 服务器项目

java - 这是匿名内部类的变体吗?