К сожалению, я не кодировал Java около пяти лет, и я абсолютно не помню, как и почему работает следующий код.
Я наткнулся на подобный пример и сломал его. Акцент делается на части ниже комментария: я не получаю нотацию конструктора, за которой следует блок в двойных скобках. И, к сожалению, я не могу найти что-либо в документации Java или с помощью Google (какие слова должны быть у Google?).
package syntaxtest;
public class Main {
public static void main(String[] args) {
// What kind of notation is this?
MyTest tester = new MyTest() {{
setName("John Johnson");
}};
System.out.println(tester.getName());
}
}
class MyTest {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Итак, вот мои вопросы:
- Как называется это обозначение/синтаксис?
- Где я могу прочитать некоторую документацию об этом?
Я думаю/надеюсь, что смогу ответить на второй вопрос сам, если кто-нибудь может дать мне ответ на первый вопрос.
Чтобы было ясно: я знаю, что результат John Johnson
;) Но я не знаю, почему он работает.