我搜索了其他问题/答案,我仍然对这个JAVA问题感到困惑。
如果我想继承一个带有泛型参数的类型,那么在使用子类的泛型参数时如何在没有阴影的情况下这样做呢?
例如:
public class A <T> extends ArrayList<T> {}
因此,如果我实例化我的自定义类,比如说Integers作为参数,那么它的ArrayList部分是否也将该值作为<T>
的参数?如果没有,那么我如何指定ArrayList的类型?
我知道在许多情况下,子分类容器可能不是最好的主意,但在这种情况下我认为它是合适的。
答案 0 :(得分:1)
是的,这将是一个人如何去做。
public static void main(String[] args) {
B<Integer> b = new B<Integer>();
b.a = 1;
b.b = "one";
b.add(1);
b.add(2);
}
public static class A<T> extends ArrayList<T> {
public T a;
}
public static class B<T> extends A<T> {
public T b;
}
如果你喜欢你甚至可以让它们有不同的类型,只要你提供超类的类型:
public static void main(String[] args) {
B<Integer, String> b = new B<Integer, String>();
b.a = 1;
b.b = "one";
b.add(1);
b.add(2);
}
public static class A<T> extends ArrayList<T> {
public T a;
}
public static class B<U, T> extends A<U> {
public T b;
}