我有外部泛型类,它有一些内部类,我想使用外部类的泛型类型。
但是,我不明白如何正确使用泛型参数。
例子:
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 是使用的示例参数,我的实际使用是不同的。