Java中未实例化的匿名类
我写Java已经有6年了,所以请原谅我生锈了
我正在使用一个库方法,它要求我传递Class
个对象。因为我必须动态调用这个方法很多次,每次使用稍微不同的Class
参数,所以我想给它传递一个匿名类
然而,到目前为止,我能找到的所有文档/教程都只涉及实例化匿名类,e.g.:
new className(optional argument list){classBody}
new interfaceName(){classBody}
我可以定义一个匿名类而不实例化它吗?或者,也许更清楚地说,我可以为匿名类创建Class
对象吗
# 1 楼答案
不幸的是,在这里你无法回避实例化。但是,您可以将其设置为“禁止操作”:
当然,如果必须从构造函数中执行某些操作的某个类派生,那么这可能不是一个选项
编辑
你的问题还说,你想调用
foo
“每次都使用稍微不同的类参数”。上面的方法行不通,因为即使将新表达式放入循环中,仍然会有一个匿名内部类定义。因此,与命名类定义相比,它并不会给您带来任何好处。特别是,如果您试图捕获某些局部变量的值,那么foo
将使用传递给它的Class
对象创建的匿名类的新实例将不会捕获它们# 2 楼答案
如果不安装匿名类,则无法访问该类的类对象。但是,如果只需要访问该类,可以在方法中定义本地类,并使用类名引用这些类。类文本语法