JAvaで匿名クラスを使用した直接newインタフェースの詳細とインスタンスコード
1203 ワード
JAva:匿名クラスを使用した直接newインタフェース
JAvaの匿名クラスには不思議な使い方があります.次のコードの例を参照してください.
上は簡単なインタフェースで、次はどのように使用しますか.
最初は、「インタフェース実装を提供しない場合、インタフェースインスタンスを直接newした」ように見え、C#erにとっては、三観を破壊する急ぎの足があった.
幸いなことに、binディレクトリの下のclass出力を観察すると、Program 1.classのようなファイルが見つかります.逆コンパイルで観察すると、コンパイラが自動的にクラスProgram 1.classのファイルを生成していることがわかります.逆コンパイルで観察すると、コンパイラが自動的にクラスProgram 1を生成していることがわかります.
場合によっては、インタフェースの実装クラスを一時的に作成するだけで、上記のテクニックはコードを簡略化するために使用することができる.
読書に感謝して、みんなを助けることができることを望んで、みんなの当駅に対する支持に感謝します!
JAvaの匿名クラスには不思議な使い方があります.次のコードの例を参照してください.
package contract;
public interface ISay {
void sayHello();
}
上は簡単なインタフェースで、次はどのように使用しますか.
package jimmy;
import contract.ISay;
public class Program {
public static void main(String[] args) {
ISay say = new ISay() {
public void sayHello() {
System.out.println("Hello java!");
}
};
}
}
最初は、「インタフェース実装を提供しない場合、インタフェースインスタンスを直接newした」ように見え、C#erにとっては、三観を破壊する急ぎの足があった.
幸いなことに、binディレクトリの下のclass出力を観察すると、Program 1.classのようなファイルが見つかります.逆コンパイルで観察すると、コンパイラが自動的にクラスProgram 1.classのファイルを生成していることがわかります.逆コンパイルで観察すると、コンパイラが自動的にクラスProgram 1を生成していることがわかります.
package jimmy;
import contract.ISay;
import java.io.PrintStream;
class Program$1
implements ISay
{
public void sayHello()
{
System.out.println("Hello java!");
}
}
場合によっては、インタフェースの実装クラスを一時的に作成するだけで、上記のテクニックはコードを簡略化するために使用することができる.
読書に感謝して、みんなを助けることができることを望んで、みんなの当駅に対する支持に感謝します!