社区。我有以下情况。我使用的是java集合,例如List接口。它是一个通用接口,其元素的类型参数为E.在我的情况下,我知道将要插入的元素的类型,但问题是将插入两种类型的元素。假设我有A级和B级,他们没有任何共同之处。 A和B最近的共同祖先是Object类。 A和B类型不是由我定义的,因此我无法更改类型层次结构。如果我像这样定义我的列表:
List<A> list = new ArrayList<>();
然后只允许A类元素,如果我这样定义:
List<B> list = new ArrayList<>();
然后只允许B类元素。有没有办法做一个逻辑OR?如何指定我想要类型A或类型B的元素,没有别的?或者java的方法是:
List<Object> list = new ArrayList<>();
并在执行任何列表操作时自行检查类型?
答案 0 :(得分:1)
出于您的目的,您需要类似于联合类型的东西,Java没有提供。你自己给出了答案:如果你不能修改层次结构,甚至不让A和B实现相同的接口,那么你将不得不使用List<Object>
并自己做额外的类型检查。