【发布时间】:2012-09-02 12:28:51
【问题描述】:
假设我有以下课程:
public class Either<A, B> {
public Object get();
}
Either 是一种存储类型 A 或 B 的一个对象的类型。get() 检索该对象。
问题是是否可以使用泛型来更改get() 的方法签名,以便返回的类型不仅仅是Object,而是A 和B 的任何常见超类型。例如,@ 987654326@可以有get()返回Number,Either<Deque<T>, Set<T>>可以有get()返回Iterable<T>或Collection<T>,以此类推。 (显然,Either<Foo,Foo> 应该有 get() 返回 Foo)。
如果这是可能的话,如果我有Either<List<A>, List<B>>,get() 可以返回的最具体的类型是什么?是原始的List、通配符List<?>,还是完全其他的?
【问题讨论】:
-
真的有人回答过关于
Either<List<A>, List<B>>的问题吗?无论如何,它需要是List<?>。
标签: java generics bounded-wildcard