java - 访问匿名类的构造函数

标签 java constructor overloading anonymous-types

假设我有一个具体的类 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 节:

An anonymous class cannot have an explicitly declared constructor.

对不起:(

编辑:作为替代方案,您可以创建一些最终局部变量,和/或在匿名类中包含实例初始化程序。例如:

public class Test {
    public static void main(String[] args) throws Exception {
        final int fakeConstructorArg = 10;

        Object a = new Object() {
            {
                System.out.println("arg = " + fakeConstructorArg);
            }
        };
    }
}

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

关于java - 访问匿名类的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/362424/

相关文章:

java - 如何区分智能卡读卡器错误和智能卡错误

java - 将 Spring Security 与 JPA 结合使用

Java继承,使用super()

c# - 在 C# 中输入别名

c++ - 使用 cout 运算符重载字符串

java - 无法在 ClickListener 上查看按​​钮内的 TextView

java - 读取 InputStream 时忽略编码

c++ - 我可以检查初始化列表中设置的构造函数主体中的变量吗?

c++ - 为什么 float 参数适合 int 函数参数?

使用类指针重载的 C++ 命名空间函数模板特化替代方案?