2012-02-13 9 views
7

私はインタフェースを持っています。Javaのインタフェース配列

このような配列を作成しようとするとどうなりますか?

Module[] instances = new Module[20] 

この配列はどのように実装できますか?

+4

これは意味をなさない。インターフェイスをインスタンス化することはできません。それは何の目的ですか?あなたは何をしようとしているのですか? – EboMike

+0

@user達成しようとしていることは何ですか? – Searock

+0

[何を試しましたか](http://mattgemmell.com/2008/12/08/what-have-you-tried/)? – ironchefpython

答えて

23

はい、可能です。あなたはモジュールのインタフェースを実装するクラスであるタイプModule

instances[0] = new MyModule();

そしてMyModuleのオブジェクトと配列のフィールドを入力する必要があります。代わりに、匿名の内部クラスを使用することもできます。

instances[0] = new Module() { 
public void actions() {} 
public void init() {} 
}; 

これはあなたの質問に答えますか?

6

このインターフェイスを実装するクラスのインスタンスで配列を入力する必要があります。

Module[] instances = new Module[20]; 
for (int i = 0; i < 20; i++) 
{ 
    instances[i] = new myClassThatImplementsModule(); 
} 
4

あなたはそのインターフェイスを実装して、アレイの作成、あなたがタイプのインタフェースである配列を作成することができますもちろん

1

にその を使用する具象クラス型を作成する必要があります。配列内の要素を使用する前に、名前または匿名で作成された配列に、そのインタフェースの具体的なインスタンスへの参照を配置するだけで済みます。以下は、配列オブジェクトのハッシュコードを出力する簡単な例です。任意の要素、たとえばmyArray [0] .method1()を使用しようとすると、NPEが得られます。

public class Test { 
public static void main(String[] args) { 
    MyInterface[] myArray = new MyInterface[10]; 
    System.out.println(myArray); 
} 
public interface MyInterface { 
    void method1(); 
    void method2(); 
} 
}