Это вариант анонимного внутреннего класса?

Вот пример

JPanel panel = new JPanel(){
    @Override
    protected void paintComponent(Graphics g){
        // do stuff
    }

    @Override
    public Dimension getPreferredSize(){
        // do stuff
    }
};

Будет ли это просто вариацией анонимного внутреннего класса или что-то совсем другое?


person mre    schedule 21.06.2011    source источник


Ответы (3)


Да, это анонимный внутренний класс

person Nathan Romano    schedule 21.06.2011
comment
@ Натан, что означает термин "анонимный"? - person mre; 22.06.2011
comment
@mre: ему не присвоено имя: вам не нужно произносить class MyClass extends JPanel, а затем создавать экземпляр MyClass, используя его имя. - person Bruno; 22.06.2011
comment
@mre ну вы создаете экземпляр нового класса, который вы определяете без имени - person Nathan Romano; 22.06.2011
comment
@mre по сути означает, что класс не имеет имени. У вас здесь конкретно анонимный внутренний класс: download.oracle.com / javase / tutorial / java / javaOO / - person Stephen Rudolph; 22.06.2011
comment
@ Бруно, @ Натан, спасибо. Мне этот термин сбивает с толку, особенно когда мне он не кажется анонимным. :) - person mre; 22.06.2011

Вы можете быть сбиты с толку анонимностью класса, потому что на первый взгляд кажется, что вы определяете панель как экземпляр JPanel. Однако это не то, что вы делаете. Вместо этого вы определяете подкласс JPanel, который является новым классом, и создаете панель, которая будет экземпляром этого нового подкласса. Как называется этот новый класс? Ну, у него его нет, и, следовательно, это делает его анонимным!

person Jim Gish    schedule 06.01.2012

Это анонимный внутренний класс.

person Kaypro II    schedule 21.06.2011