Что это в Java?Прикрепить методы "на лету"? - PullRequest
3 голосов
/ 03 июля 2011

Я видел что-то подобное сегодня:

    frame.addWindowListener(new WindowAdapter() {

        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    });

Что означает следующая часть?

new AClass(){ this part }

Могу ли я "расширить" и создать новый экземпляр этого класса inline?

Я пытался гуглить, но я не знал, как это называется = /

PS: изучение java = p

Ответы [ 4 ]

3 голосов
/ 03 июля 2011

Это называется «анонимный класс» ... это сокращенный способ реализации интерфейса или расширения существующего класса (обычно абстрактный класс «Adapter» или «Helper»), не удосуживаясь назвать его.

Обычно вы видите это в коде Swing ... реализации оконных и мышиных слушателей.

Это выглядит (по номинальной стоимости) как достойное обсуждение темы: http://www.javaworld.com/javaworld/javaqa/2000-03/02-qa-innerclass.html

Cheers,Кит.

2 голосов
/ 03 июля 2011

Это просто анонимный внутренний класс, он полезен, когда вы собираетесь использовать эту реализацию интерфейса только один раз, это может быть очень полезно, так как в противном случае вам придется создать целый класс только для этого.

2 голосов
/ 03 июля 2011

Чтобы добавить к ответу Богемяна, это то же самое, что сделать что-то подобное

class MyWindowAdapter extends WindowAdapter() {

        @Overide 
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
}

и

frame.addWindowListener(new MyWindowAdapter());
1 голос
/ 03 июля 2011

Это называется анонимный класс.

...