如何强制静态泛型方法的返回类型?
具有类层次结构:
String child = null;
Object parent = child;
如何强制 Sets.newHashSet(E...)
在传递参数时返回?Set<Object>
String
具有类层次结构:
String child = null;
Object parent = child;
如何强制 Sets.newHashSet(E...)
在传递参数时返回?Set<Object>
String
您可以使用以下命令指定泛型返回类型:
Sets.<Object>newHashSet(child);
也许返回是可以的,然后你可以把它写成一个返回类型:Set<? extends Object>
public Set<? extends Object> myMethod() {
return Sets.newHashSet(child);
}
将类型参数显式传递给 :newHashSet
Sets.<Object>newHashSet(child);
如果未显式传递类型参数,则推断出类型,在这种情况下,它被推断为错误的类型,大概是 。String
看来你正在使用番石榴的套装。方法签名如下所示:
public static <E> HashSet<E> newHashSet()
如您所见,采用类型参数 。结果是 。 被推断为 ,但您已指定要返回的方法。解决方案是帮助编译器或放宽对 的返回类型的限制。newHashSet()
E
HashSet<E>
E
String
Set<Object>
Set<? extends Object>