いくつかの内部クラスを持つ外部ジェネリッククラスがあり、そのために外部クラスのジェネリック型を使用したいと思います。
ただし、ジェネリックパラメータを正しく使用する方法がわかりません。
例:
class Outer<E extends CharSequence>{
class Inner extends ArrayList<E>{
}
void func() {
ArrayList<CharSequence> al = new ArrayList<CharSequence>();
al.add("abc"); // OK
CharSequence a = al.get(0); // OK
Inner in = new Inner();
in.add("abc"); // Error: The method add(E) in the type ArrayList<E> is not applicable for the arguments (String)
CharSequence b = in.get(0); // OK
}
}
同じ汎用タイプの外部クラスを使用するように内部クラスを宣言するにはどうすればよいですか?ありがとう
編集+解決策:
ついに私は私が望んでいたことを達成しました、これが結果の例です:
abstract class MyGenericClass<E extends CharSequence>{
class TheList extends ArrayList<E>{};
TheList list = new TheList();
}
final class ClassInstance extends MyGenericClass<String>{
};
public class Main{
public static void main(String[] args){
ClassInstance c = new ClassInstance();
c.list.add("abc");
String s = c.list.get(0);
}
}
私の要件は、ジェネリッククラスと、その親クラスと同じ型パラメーターを使用するジェネリックコンテナーを含めることでした。
注:CharSequence / Stringは使用例のパラメーターであり、実際の使用法は異なります。