Co oznacza ten zapis

0

Od jakiegoś czasu poznaję Java i napotykam czasami na podobny zapis:

public void test() {
    new SomeObject() {
        public void doSomething() {
            // Something...
        }
    }
}

O co chodzi z tym otwarciem obiektu (nie wiem jak to się fachowo nazywa)? Co mi to daje?

3

To jest utworzenie klasy anonimowej implementującej jakiś interfejs. Daje ci tyle że nie musisz tworzyć nowego pliku z tą klasą. Przydatne jeśli na przykład definiujesz jakiś krótki funktor używany tylko w jednym miejscu. Na przykład definiujesz akcje kliknięcie w Buttona jakiego i potrzebujesz tam obiekt który implementuje ActionListener

2

Niepelna odpowiedz. Niekoniecznie intersejs, przeciez mozna tak rozszerzac rowniez klasy. Co daje? Nie tylko nie trzeba tworzyc pliku; taka instancja klasy wewnetrznej ma dostep do wszystkich pol i metod, nawet prywatnych, klasy zewnetrznej. Dziala to tak ze kompilator dodatkowo dodaje do konstruktora argument bedacy referencje do klasy zewnetrznej i tworzy mostkowe metody - ale to juz pewnie za duzo info na start.

1 użytkowników online, w tym zalogowanych: 0, gości: 1