假设我有以下课程:
public class Either<A, B> {
public Object get();
}
Either
是一种存储类型 A 或 B 的一个对象的类型。 get()
检索该对象。
问题是是否可以使用泛型来改变 的方法签名,get()
以便返回的类型不仅仅是Object
,而是 A 和 B 的任何常见超类型。例如,anEither<Integer, Long>
可以有get()
return Number
,anEither<Deque<T>, Set<T>>
可以有get()
returnIterable<T>
或Collection<T>
,等等。(显然, anEither<Foo,Foo>
应该有get()
return Foo
)。
如果这是可能的,如果我有,可以返回Either<List<A>, List<B>>
的最具体的类型是什么?get()
它是 raw List
, wildcardList<?>
还是完全其他的东西?