假设我有一个具体的 Class1 类,我正在用它创建一个匿名类。
Object a = new Class1(){ void someNewMethod(){ } };
现在有什么办法可以重载这个匿名类的构造函数。如下图所示
Object a = new Class1(){ void someNewMethod(){ } public XXXXXXXX(int a){ super(); System.out.println(a); } };
用 xxxxxxxx 处的东西来命名构造函数?
来自Java Language Specification,第 15.9.5.1 节:
匿名类不能有显式声明的构造函数。
对不起 :(
编辑:作为替代方案,您可以创建一些最终局部变量,和/或在匿名类中包含一个实例初始化程序。例如:
public class Test { public static void main(String[] args) throws Exception { final int fakeConstructorArg = 10; Object a = new Object() { { System.out.println("arg = " + fakeConstructorArg); } }; } }
这很糟糕,但它可能只会帮助你。或者,使用适当的嵌套类:)