#java
объясните записи 1: Object obj = new Object() { Integer id = 10; String name = "name"; }; 2: Object obj = new Object() { { Integer id = 10; String name = "name"; } }; в чем разница между этими записями? в какую область видимости попадут переменные и какие модификаторы доступа они получат?
Ответы
Ответ 1
Вы создаёте экземпляр анонимного класса, который является наследником класса Object с двумя новыми полями. Так как эти поля объявлены без модификаторов доступа, то они получат модификаторы доступа по умолчанию. Можно будет обращаться к этим полям как obj.id и obj.name. Вы создаёте экземпляр анонимного класса, который является наследником класса Object. Новых полей у этого класса нет, но есть так называемый Instance initialization block. Это такой блок, который будет выполнен при каждом создании экземпляра класса. Можно считать, что код внутри этого блока будет скопирован в начало каждого конструктора. Таким образом, переменные, объявленные внутри этого блока, являются обычными локальными переменными, и исчезнут после выхода из блока.
Комментариев нет:
Отправить комментарий