このインターフェイスのオブジェクトを作成するには?
8 に答える
すべての既知の実装クラスの下を見てください: CustomField
これはおそらくあなたが探しているクラスです
Field<T> myField = new CustomField<T>(String name, DataType<T> type);
フィールドのリスト (配列) の場合:
ArrayList<Field<T>> arr = new ArrayList<Field<T>>();
arr.add(myField);
ジェネリックに慣れていない場合、T は使用する参照型 (クラス) を表すだけです。
単純な配列型 (ArrayList ではない) の場合、次のようになります。
Field<T>[] arr = new Field<T>()[size];
arr[0] = myField;
ArrayList またはその他の Collection の使用を検討してください。あなたの場合のように、変数を参照するプレーンな古い配列を使用する理由はありません。
できません(コンストラクターがinstatiate
ありinterface
ません)...
「匿名内部クラス」については、Java 言語仕様 (またはお気に入りの Java 本) を読むことをお勧めします。
できません。interface
contains 、そのunimplemented methods
オブジェクトを作成しても意味がありません-クラスimplement
をインターフェイスにしてから、そのクラスをインスタンス化する必要があります。
できないと強く信じてい instantiate
interface
ます。
その実装を使用するか、代わりに匿名の内部クラスを使用interface
できます 。
ドキュメントの例
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
のオブジェクトを作成できませんInterface
。タイプの参照を作成でき、Interface
それを実装する任意のクラスのオブジェクトを保持できますinterface
。
Field
そのため、インターフェイスを実装するクラスが必要であり、名前をFieldImpl
. 次に、次のように Field の参照で FiledImpl のオブジェクトを保持できます。
Field f = new FieldImpl();
いずれにせよ、Field を実装するクラスが必要です。1 つのアプローチは、匿名クラスを使用することです。
Field myField = new Field() {
// implementation of Field's methods.
}
または、Field を実装する名前付きクラスを作成し、そのクラスのインスタンスを作成することもできます。
インターフェイス定義によると
インターフェイスはインスタンス化できず、実装されます。
インターフェイスを実装するクラスは、インターフェイスに記述されているすべてのメソッドを実装するか、抽象クラスである必要があります。
Java のオブジェクト参照は、インターフェイス タイプとして指定できます。その場合、それらは null であるか、インターフェイスを実装するオブジェクトにバインドされている必要があります。