объясните записи
1:
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. Это такой блок, который будет выполнен при каждом создании экземпляра класса. Можно считать, что код внутри этого блока будет скопирован в начало каждого конструктора. Таким образом, переменные, объявленные внутри этого блока, являются обычными локальными переменными, и исчезнут после выхода из блока.
Комментариев нет:
Отправить комментарий