【发布时间】:2011-04-07 00:57:44
【问题描述】:
我正在尝试使用泛型扩展一个抽象类,但遇到了问题:
abstract public class SomeClassA<S extends Stuff> {
protected ArrayList<S> array;
public SomeClassA(S s) {
// ...
}
public void someMethod() {
// Some method using the ArrayList
}
abstract public void anotherMethod() {
// ...
}
}
现在我想用另一个抽象类来扩展这个类,这样我就可以覆盖“someMethod”。我试过了:
abstract public class SomeClassB<Z extends Stuff> extends SomeClassA {
public SomeClassB(Z z) {
super(z);
}
@Override public void someMethod() {
// Some method using the ArrayList
}
}
NetBeans 没有发现构造函数有任何问题,但我无法在方法 someMethod 中使用 SomeClassA 中的 ArrayList。所以我尝试了:
abstract public class SomeClassB<Z extends Stuff> extends SomeClassA<S extends Stuff> {
public SomeClassB(Z z) {
super(z);
}
@Override public void someMethod() {
// Some method using the ArrayList
}
}
现在这很奇怪。一切似乎都有效(我现在可以使用数组列表,但 NetBeans 说 SomeClassB 的声明中有一个“>”,但它不会编译。如果可能,我想:
了解如何解决这个特殊问题。
有一个很好的参考来理解泛型。
想知道在 C# 中是否更容易。
【问题讨论】:
标签: java generics inheritance abstract