Fra*_*ani 12 java generics java-7
有一个类层次结构:
String child = null;
Object parent = child;
Run Code Online (Sandbox Code Playgroud)
如何强制Sets.newHashSet(E...)返回Set<Object>传递String参数?
Dmi*_*urg 18
您可以指定泛型返回类型:
Sets.<Object>newHashSet(child);
Run Code Online (Sandbox Code Playgroud)
也许你可以返回Set<? extends Object>,然后你可以把它写成一个返回类型:
public Set<? extends Object> myMethod() {
return Sets.newHashSet(child);
}
Run Code Online (Sandbox Code Playgroud)
您将类型参数显式传递给newHashSet:
Sets.<Object>newHashSet(child);
Run Code Online (Sandbox Code Playgroud)
如果未明确传递type参数,则推断出类型,在这种情况下,推测它是错误的类型String.
看来你正在使用Guava的套装.方法签名如下:
public static <E> HashSet<E> newHashSet()
Run Code Online (Sandbox Code Playgroud)
如您所见,newHashSet()需要一个类型参数E.结果是HashSet<E>.E被推断为String,但您已指定要返回的方法Set<Object>.解决方案是帮助编译器或放宽返回类型中的限制Set<? extends Object>.
| 归档时间: |
|
| 查看次数: |
1875 次 |
| 最近记录: |