2012-05-06 15 views
25

Co robią te nawiasy klamrowe?Nawiasy klamrowe w wyrażeniu "nowym"? (np. "nowy MyClass() {...}")

handler1 = new Handler() { 

     public void handleMessage() { 

     } 
}; 

object = new Class_Name() {};? Ta składnia istnieje również tylko w systemie Android lub Java? A jak się nazywa w Javie? Dziękuję za pomoc.

+0

Podobne/duplikat pytanie: [ "Różnica między nowym test() i nowy test() {}"] (http://stackoverflow.com/q/22164036/320399) – blong

Odpowiedz

22

Jest to składnia tworzenia instancji anonymous class, która rozszerza Handler. To jest część Java.

+0

Dziękuję bardzo. Straciłem na to dużo czasu: ((. – wanting252

2

To się dzieje, gdy tworzysz referencję instancji interfejsu. Na przykład chcę utworzyć instancję interfejsu Runnable razem z klasą, a następnie mogę utworzyć ją, tworząc anonimową klasę dla tego samego i przesłaniając metodę interfejsu run(). Możesz dobrze zrozumieć, patrząc na inny przykład, inny niż podany poniżej.

Runnable runnable = new Runnable() { 

    public void run() { 
     // TODO Auto-generated method stub 

    } 
};