man*_*uti 8 java constructor anonymous-class
注意:这是一个自我回答的问题.这可能是一个非常简单的,但我认为值得分享.
假设我有一个匿名类声明:
MyObject myObj1 = new MyObject() {
};
Run Code Online (Sandbox Code Playgroud)
在哪里MyObject:
class MyObject {
public MyObject() { // explicit public constructor
}
...
}
Run Code Online (Sandbox Code Playgroud)
从Java语言规范的这一部分(强调我的):
匿名类不能具有显式声明的构造函数.相反,匿名构造函数是为匿名类隐式声明的.
如果我试图获得public构造函数的数量:
// Number of public constructors; prints 0
System.out.println(myObj1.getClass().getConstructors().length);
Run Code Online (Sandbox Code Playgroud)
它按预期打印零,即匿名构造函数不是public.
它也不是private,因为如果我们从定义匿名类的同一个包中的不同类调用以下内容(通过传递实例myObj1):
myObj1.getClass().getDeclaredConstructor().newInstance();
Run Code Online (Sandbox Code Playgroud)
它完成没有的IllegalAccessException.
匿名类中隐式构造函数的访问修饰符是什么?
| 归档时间: |
|
| 查看次数: |
204 次 |
| 最近记录: |