作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我今天偶然发现了这个错误,我不完全明白问题出在哪里。
我有一个简单的界面
public interface MyInterface
{
}
然后我尝试创建一个 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 中,类型参数可以从使用表达式的上下文中推断出来。这里它被用在赋值表达式中给 ImmutableSet<MyInterface>
多变的。
在 Java 7 中不是这样。
在Java 7中,你可以做到
ImmutableSet<MyInterface> a = ImmutableSet.<MyInterface>of(new MyInterface() {
});
显式设置类型参数。
关于java - 与 Java 泛型和匿名类的类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23432078/
我是一名优秀的程序员,十分优秀!