2013-06-02 18 views
7

Come è questo codice di lavoro i M totalmente perplesso ....Come possiamo creare l'oggetto di interfaccia in java?

package com.servletpack.examples; 

interface check { 
    public void message(); 
} 
public class Interface { 
    public static void main(String[] args) { 
     try { 
      check t = new check() {//how???????????????? 
       public void message() { 
        System.out.println("Method defined in the interface"); 
       } 
      }; 
      t.message(); 
     } catch (Exception ex) { 
      System.out.println("" + ex.getMessage()); 
     } 
    } 
} 
+2

Hai provato [googling] (https://www.google.co.il/search?q=How+can+we+create+object+of+interface+in+java%3F&rlz=1C1CHEU_iwIL474IL474&oq=How+ possiamo + abbiamo + + oggetto + di + interfaccia + in + java% 3F & aqs = chrome.0.57j60l2j0l3.802j0 & sourceid = chrome & ie = UTF-8)? – BobTheBuilder

+0

Hai provato a google cose e per vedere i fondamentali di JAVA? referenziare a questo link http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html –

risposta

18

Con questa sintassi, si crea un anonymous class, che è perfettamente legale.

Internamente, le classi anonime vengono compilate in una classe a parte, denominata EnclosingClass$n dove il nome della classe che precede 'precede il segno $. e n aumenti per ogni ulteriore classe anonima. Ciò significa che la seguente classe viene creata:

class Interface$1 implements check { 
    public void message() { 
     System.out.println("Method defined in the interface"); 
    } 
} 

Poi, il codice main compila usare internamente la classe anonima appena definito:

check t = new Interface$1(); 
t.message(); 
+0

Cosa succede se Interface $ 1 è una classe astratta? –

+1

@RamaKrishna Le classi anonime non possono essere astratte. Se l'interfaccia 'check' era invece una classe astratta, la sua implementazione anonima sarebbe stata chiamata' Interface $ 1 '. – Vulcan

5

Si sta creando un'istanza (al volo) di anonymous class che implementa il controllo di interfaccia.

2

suo riferimento interfaccia può contenere l'oggetto della implementazione di classe. Stai implementando una classe anonima e assegnandola al riferimento dell'interfaccia, che è assolutamente legale in JAVA.

2

È una classe anonima. La tua classe controlla la classe è un'interfaccia. La classe anonima definisce al volo un'implementazione dell'interfaccia data. Quindi ti salva dalla creazione di una classe separata per l'implementazione di Interface. Questo approccio è utile solo quando sai che non imporrai mai questa implementazione in nessun'altra parte del codice.

Spero che questa spiegazione aiuti !!

Problemi correlati