2013-06-02 4 views
7

Comment est ce code de travail je suis totalement perplexe ....Comment créer un objet d'interface en 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

Avez-vous essayé [googling] (https://www.google.co.il/search?q=How+can+we+create+object+of+interface+in+java%3F&rlz=1C1CHEU_iwIL474IL474&oq=How+ can + we + create + objet + de + interface + in + java% 3F & aqs = chrome.0.57j60l2j0l3.802j0 & sourceid = chrome & ie = UTF-8) ça? – BobTheBuilder

+0

Avez-vous essayé de google choses et de voir les fondamentaux de JAVA? référez-vous à ce lien http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html –

Répondre

18

Avec cette syntaxe, vous créez un anonymous class, ce qui est parfaitement légal.

En interne, les classes anonymes sont compilées dans une classe qui leur est propre, appelée EnclosingClass$n, où le nom de la classe englobante précède le signe . et n augmente pour chaque classe anonyme supplémentaire. Cela signifie que la classe suivante est en cours de création:

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

Ensuite, le code main compile à utiliser en interne la classe anonyme nouvellement défini:

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

Et si Interface $ 1 est une classe abstraite? –

+1

@RamaKrishna Les cours anonymes ne peuvent pas être abstraits. Si l'interface 'check' était à la place une classe abstraite, son implémentation anonyme serait nommée' Interface $ 1'. – Vulcan

5

Vous créez une instance (à la volée) de anonymous class qui implémente le contrôle d'interface.

2

Votre référence d'interface peut contenir l'objet de la classe d'implémentation. Vous implémentez une classe anonyme et l'attribuez à la référence d'interface, ce qui est absolument légal dans JAVA.

2

C'est une classe anonyme. Votre vérifiez class est une interface. La classe anonyme définit une implémentation de l'interface donnée à la volée. Cela vous évite de créer une classe séparée pour l'implémentation d'Interface. Cette approche n'est utile que lorsque vous savez que vous n'aurez jamais besoin de cette implémentation nulle part ailleurs dans le code.

Espérons que cette explication aide !!