繁体   English   中英

键入与Java泛型和匿名类不匹配

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM