[英]Type mismatch with Java generics and anonymous class
我今天偶然发现了这个错误,我不完全明白问题是什么。
我有一个简单的界面
public interface MyInterface
{
}
然后我尝试使用of()
方法创建一个Guava ImmutableSet of()
并将其传递给一个匿名类实例。
ImmutableSet<MyInterface> a = ImmutableSet.of(new MyInterface()
{
});
编译器不喜欢它:
Type mismatch: cannot convert from ImmutableSet<new MyInterface(){}> to ImmutableSet<MyInterface>
什么样的类型是ImmutableSet<new MyInterface(){}>
? 我不熟悉这种语法。
这是Java 8中类型推断功能改进的一部分,它可以在其中运行。 在Java 8中,可以从使用表达式的上下文推断出type参数。 这里它被用在一个赋值表达式中,用于ImmutableSet<MyInterface>
变量。
在Java 7中并非如此。
在Java 7中,您可以这样做
ImmutableSet<MyInterface> a = ImmutableSet.<MyInterface>of(new MyInterface() {
});
显式设置类型参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.