Klasy statyczne. Definicja w miejscu.

0
new Timer().scheduleTask(new Timer.Task() {
            @Override
            public void run(){
                
            }
        });

Co to oznacza? W sensie to w nawiasie.

Dobrze, rozumiem, że to jest taki skrótowiec Javowy na:
Stwórz instancję klasy POCHODNEJ od Timer.Task() , którą właśnie teraz definiuję. I to definiowanie to taki "feature" Javy. Dobrze rozumiem?

Czym jest klasa statyczna i jak ma się ona do zwykłej, niestatycznej.

0

Jak już to co napisałeś to nie klasa statyczna tylko anonimowa.
W Javie można tylko stworzyć statyczną klasę zagnieżdżoną, która różni się od niestatatycznej klasy zagnieżdżonej że można utworzyć jej obiekt poza klasą "opakowującą"

 
public class Foo{
 
     public static class Bar{
     
     }

}

I możesz zrobić coś takiego

 Foo.Bar obj = new Foo.Bar();
0

Autorowi chyba chodzi o

new Timer.Task()

. Jeśli klasa Task nie byłaby statyczna tylko instancyjna, musiałbyś utworzyć najpierw obiekt klasy Timer, a dopiero później klasę task. Dzięki temu, że jest statyczna możesz utworzyć obiekt Task bez tworzenia obiektu Timer.

0

Dobrze, to jest już jasne.

A co to 1. pytania?

Stwórz instancję klasy POCHODNEJ od Timer.Task() , którą właśnie teraz definiuję. I to definiowanie to taki "feature" Javy. Dobrze rozumiem?

1

Tak. Co więcej w javie 8 możesz to zastąpić lambdą bo interfejs który chcesz implementować ma tylko 1 metodę.

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