我写 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/