gpt4 book ai didi

java - 与 Java 泛型和匿名类的类型不匹配

转载 作者:行者123 更新时间:2023-11-29 05:24:02 24 4
gpt4 key购买 nike

我今天偶然发现了这个错误,我不完全明白问题出在哪里。

我有一个简单的界面

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com