从我写Java到现在已经有6年了,所以请原谅。
我正在使用要求我传递Class
对象的库方法。由于我必须动态地多次调用此方法,因此每次Class
都要使用略有不同的参数,因此我想将其传递给一个匿名类。
但是,到目前为止,我所能找到的所有文档/教程都只涉及实例化匿名类,例如:
new className(optional argument list){classBody}
new interfaceName(){classBody}
是否可以在不实例化的情况下定义匿名类?或者,也许更清楚地讲,我可以Class
为匿名类创建对象吗?
不幸的是,您无法避开此处的实例化。您可以将其设为无操作,但是:
foo((new Object() { ... }).getClass());
当然,如果您必须派生自某些在构造函数中执行某些操作的类,则这可能不是一个选择。
您的问题还说您想调用foo
“每次使用稍微不同的Class参数”。上面不会做,因为即使将new-expression放入循环中,仍然会有一个匿名的内部类定义。因此,与命名类定义相比,它实际上不会给您带来任何好处。特别是,如果你想给它做一些局部变量的捕捉值,你的匿名类的新实例foo
将创建使用Class
传递给它的对象不会让他们抓获。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句