小编典典

访问匿名类的构造函数

all

假设我有一个具体的 Class1 类,我正在用它创建一个匿名类。

Object a = new Class1(){
        void someNewMethod(){
        }
      };

现在有什么办法可以重载这个匿名类的构造函数。如下图所示

Object a = new Class1(){
        void someNewMethod(){
        }
        public XXXXXXXX(int a){
          super();
          System.out.println(a);
        }
      };

用 xxxxxxxx 处的东西来命名构造函数?


阅读 67

收藏
2022-06-07

共1个答案

小编典典

来自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);
            }
        };
    }
}

这很糟糕,但它可能只会帮助你。或者,使用适当的嵌套类:)

2022-06-07