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