解释笔记
一:
Object obj = new Object() {
Integer id = 10;
String name = "name";
};
2:
Object obj = new Object() {
{
Integer id = 10;
String name = "name";
}
};
这些条目之间有什么区别?变量将进入什么范围以及它们将获得什么访问修饰符?
解释笔记
一:
Object obj = new Object() {
Integer id = 10;
String name = "name";
};
2:
Object obj = new Object() {
{
Integer id = 10;
String name = "name";
}
};
这些条目之间有什么区别?变量将进入什么范围以及它们将获得什么访问修饰符?
您实例化一个匿名类,该类继承自
Object具有两个新字段的类。由于这些字段声明时没有访问修饰符,因此它们将接收默认访问修饰符。obj.id您可以像访问这些字段obj.name。您正在创建一个匿名类的实例,它是 的子类
Object。此类没有新字段,但有一个所谓的Instance initialization block. 这是一个将在每次创建类的实例时执行的块。我们可以假设此块中的代码将被复制到每个构造函数的开头。因此,在此块内声明的变量是普通的局部变量,并且在块退出时将消失。