注意: 这是一个自问自答的问题。它可能很简单,但我认为值得分享。
假设我有一个匿名类声明:
MyObject myObj1 = new MyObject() {
};
其中MyObject
表示:
class MyObject {
public MyObject() { // explicit public constructor
}
...
}
从Java语言规范的此部分(重点在于“我”):
如果我尝试获取匿名类不能有显式声明的构造函数。相反,匿名类会为其隐式声明一个匿名构造函数。
public
构造函数的数量:// Number of public constructors; prints 0
System.out.println(myObj1.getClass().getConstructors().length);
按预期输出了0,即匿名构造函数不是public
。
它也不是private
,因为如果我们从同一包中的不同类中调用以下内容(通过传递实例myObj1
):
myObj1.getClass().getDeclaredConstructor().newInstance();
它在没有IllegalAccessException
的情况下完成。
匿名类中隐式构造函数的访问修饰符是什么?