Java中未实例化的匿名类

暴行:

从我写Java到现在已经有6年了,所以请原谅。

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

但是,到目前为止,我所能找到的所有文档/教程都只涉及实例化匿名类,例如

new className(optional argument list){classBody}

new interfaceName(){classBody}

是否可以在不实例化的情况下定义匿名类?或者,也许更清楚地讲,我可以Class为匿名类创建对象吗?

帕维尔·米纳夫(Pavel Minaev):

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

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

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

编辑

您的问题还说您想调用foo“每次使用稍微不同的Class参数”。上面不会做,因为即使将new-expression放入循环中,仍然会有一个匿名的内部类定义因此,与命名类定义相比,它实际上不会给您带来任何好处。特别是,如果你想给它做一些局部变量的捕捉值,你的匿名类的新实例foo将创建使用Class传递给它的对象不会让他们抓获。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章