2つのパラメーターを取得するメソッドを作成したいと思います。
- インターフェイス。
- そのインターフェースを実装するクラス。
汎用的にしたい(コンパイル時のタイプセーフ)。
方法はありますか?そうでない場合、代替手段は何ですか?
インターフェイスである汎用パラメータを取得するオプションはありますか?どうやって宣言しますか??
このようなもの ??
public <I, K extends I> void method(I i, K k){
}
上記のメソッドでは、最初のパラメーターはインターフェースであり、2番目のパラメーターはそのインターフェースを実装する任意のクラスです。
Interface1 i1;
method(i1, class1); //class1 implements Interface1
ジェネリックスでは、インターフェイスの実装とクラスの拡張は、extendsキーワードを使用して表されます。ジェネリックスの世界にはimplementsキーワードはありません。
public <T extends Interface> T myMethod(Interface I, Class<T> myClass) () {...}
メソッドがTを返す場合