2010-07-02 9 views
5
public void insert(final String key, final String value) throws Exception { 
    execute(new Command(){ 
     public Void execute(final Keyspace ks) throws Exception { 
     ks.insert(key, createColumnPath(COLUMN_NAME), bytes(value)); 
     return null; 
     } 
    }); 
    } 

Der Text des neuen Befehls() sieht wie eine Inline-Methode aus?Wird dies als eine anonyme Inline-Methode betrachtet?

Wie heißt das, ich will das vollständig verstehen.

Antwort

11

Es ist eine anonyme innere Klasse. Sie erstellen eine Klasse, die von der Command Klasse abgeleitet ist oder die Command Schnittstelle implementiert. In diesem Fall überschreiben Sie nur eine Methode, aber Sie können überschreiben mehr - sowie zusätzliche Felder usw.

Java hat (derzeit) nichts, das ist ziemlich gleichbedeutend mit einer anonymen C# -Methode wenn du daran gedacht hast. Eine anonyme innere Klasse ist jedoch wahrscheinlich am nächsten dran.

+0

"Java hat (zur Zeit) nichts, was einer anonymen C# -Methode recht ähnlich ist" oder eine anonyme Ruby-Methode oder eine anonyme Python-Methode oder eine anonyme Lisp-Methode oder eine anonyme Javascript-Methode ... –

2

es ist eine anonyme innere Klasse. In diesem Fall handelt es sich höchstwahrscheinlich um eine Implementierung einer Befehlsschnittstelle oder einer abstrakten Klasse.

5

Es ist ein anonymous class.

Command ist eine zuvor definierte Schnittstelle oder Klasse, so ist dies gleichbedeutend mit:

public void insert(final String key, final String value) throws Exception { 
    class MyCommand implements Command { // or "extends Command" 
     public Void execute(final Keyspace ks) throws Exception { 
      ks.insert(key, createColumnPath(COLUMN_NAME), bytes(value)); 
      return null; 
     } 
    } 
    execute(new MyCommand()); 
} 
2

Wie gesagt, es ist eine anonyme innere Klasse. Sie sehen diesen Ansatz häufig als schnelle Möglichkeit, Schnittstellen mit einer einzigen Methode zu implementieren.

Sprachen wie Groovy und JavaScript verwenden Schließungen für diese Art von Sache.

Verwandte Themen