2017-03-15 6 views
2

についての詳細情報を見つけるのですか、私は、これがうまくいくだけでなく、おそらくコンパイルこのどこで、このような暗黙のクラス実装

public class Test { 
static void myTest() { 
    TestInterface test = new TestInterface() { 

     @Override 
     public void test1() { 
      // TODO Auto-generated method stub 
     } 

     @Override 
     public boolean isOK() { 
      // TODO Auto-generated method stub 
      return false; 
     } 
    }; 
    if (test.isOK()) test.test1(); 
    } 
} 

interface TestInterface { 
    void test1(); 
    boolean isOK(); 
} 

のようないくつかのコードを発見しました。 私はそれがインターフェイスとそのクラスのインスタンスの暗黙的な実装を作成することを理解します。 "java" "暗黙の" "インターフェース"を使用してGoogleにこれを試しても、この構造に関する詳細な背景情報は得られません。私が紛失している検索用語はどれですか?

+3

これは匿名クラスと呼ばれています。https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html – Berger

+1

ありがとう@Berger簡単な質問にお答えしたいと考えています) リンクありがとう同じように。 – datafiddler

+0

@datafiddlerあなたはおそらくBergerの答えを受け入れるべきだとマークするべきです。 – domsson

答えて

1

これは匿名クラスと呼ばれます:Anonymous classes

式は、名前を持たず、別のクラスを拡張する(またはインターフェイスを実装する)クラスを宣言してインスタンス化するためにも使用されます。

匿名クラスを使用すると、コードをより簡潔にすることができます。彼らは を使用して、クラスを同時に宣言してインスタンス化することができます。

これらのクラスは、それらを宣言するメソッドにとってローカルです。

関連する問題