gpt4 book ai didi

类型删除后 Java 泛型名称冲突

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:03:33 25 4
gpt4 key购买 nike

<分区>

我正在阅读“Java Generics and Collections”这本书,遇到了这段代码,它应该可以无误地编译和运行

class Overloaded {
public static Integer sum(List<Integer> ints) {
int sum = 0;
for (int i : ints) sum += i;
return sum;
}
public static String sum(List<String> strings) {
StringBuffer sum = new StringBuffer();
for (String s : strings) sum.append(s);
return sum.toString();
}
}

但是,这个例子编译失败

Error:(16, 26) java: name clash: sum(java.util.List) and sum(java.util.List) have the same erasure

我能理解为什么这是一个错误。但是,书中特别提到这是允许的,因为编译器可以根据返回类型区分这两种方法。

然后我发现了这个话题 Type Erasure and Overloading in Java: Why does this work?

它还建议这个例子应该编译。知道是什么导致编译失败吗?

我正在使用 JDK 1.8。这是最近用 Java 1.8 改变的吗?如果这是相关的,我使用最新的 IntelliJ IDEA 作为 IDE。

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