0

我有两个类 A 和 B,它们都扩展了一个类 C。现在,类 D 有两个 ArrayLists 作为成员:

  • ArrayList<A>(说arrayA
  • ArrayList<B>(说arrayB

D 也有一个返回arrayA 或arrayB 的方法,但我想将它们转换为一个ArrayList< C >,所以我不必担心辨别它是返回arrayA还是返回arrayB

我知道ArrayList< A >并且ArrayList< B >不扩展ArrayList< C >(即使 A 和 B 扩展了 C),但我该怎么做呢?

4

4 回答 4

2

您应该ArrayList<? extends C>从该类方法返回D

编辑:

您需要将返回的值转换为预期的类型,您将得到不安全类型转换操作的警告。这是不可避免的。

于 2013-06-29T19:02:28.733 回答
1

请参阅通配符文档。这是一个例子:

class C {
}

class A extends C {
}

class B extends C {
}

class D {
    private ArrayList<A> aList;
    private ArrayList<B> bList;

    public ArrayList<? extends C> getList(boolean aOrB) {
        return aOrB ? aList : bList;
    }
}
于 2013-06-29T19:07:25.083 回答
0

List有1ArrayList<C>和一个返回 a 的方法List<C>

这样,你可以add(C element)which 可以是AB

于 2013-06-29T19:02:09.050 回答
0

您在 D 类中的返回类型为

ArrayList<? extends C>
于 2013-06-29T19:02:42.097 回答