【发布时间】:2014-03-31 16:46:51
【问题描述】:
我有三个类:抽象 A 和两个扩展 A 的 B 和 C。
class A<T> {
ArrayList<T> someField;
A() {
someField = new ArrayList<T>();
}
ArrayList<T> getSomeField() { return someField; }
}
现在我有 B 和 C
class B<T> extends A {
B() {
super();
}
}
class C<T> extends A{
C() {
super();
}
}
当我尝试使用与 B 和 C 不同类型的 getSomeField 时,我必须指定它是哪种类型。我的问题是如何将 T 参数从 B 类传输到 A 以避免指定 ArrayList 的类型,例如使用每个循环。如果有可能的话。
例子:
我希望:
B obj = new B<T>();
for (T item: B.getSomeField) {
do something
}
我必须:
B obj = new B<T>();
for (T item: (ArrayList<T>)B.getSomefield) {
do something
}
【问题讨论】:
-
我没有看到
B和C从A扩展,A都不是抽象类。 -
您的意思是
class B<T> extends A<T>?否则,您将扩展原始类型。如果您能展示一个简短但完整的程序来演示问题,那将非常有帮助。
标签: java generics inheritance