java - 为什么 Java 不允许基于类型参数的重载?

标签 java generics type-erasure

我们可以在 .NET 中解决这个问题:

interface I<A> {}
interface I<A, B> {}

...但在 Java 中,相同的代码会导致编译错误。

这很有趣,因为即使类型信息在运行时消失了,人们仍希望有关类型参数数量的信息仍然存在。

如果此限制与类型删除有关,有人可以解释原因吗?

最佳答案

它与类型删除无关,而与使用 raw type 引起的歧义无关。 :

I eye = null;  // which 'I' is it?

为了适应在 JDK 5.0 中引入泛型之前编写的代码,允许使用原始类型。

关于java - 为什么 Java 不允许基于类型参数的重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17583668/

相关文章:

java - 检查一个对象是否是给定类名列表的实例

java - 序列化对象会发生什么?如何在整个序列化过程中保持观察者?

java - MVC Java 困惑

java - 使用 JAXB 编码内部类 - Java

java - 使用自定义 Jar 时编译 Maven 项目抛出错误

java - Type Erasure 抬头,如何规避?

ArrayList.toArray() 中的 Java 泛型

c# - Action 的通用约束没有按预期工作

c# - 在 C# 类中实例化泛型类型

java - 泛型问题 - 无法编译代码,可能是由于类型删除