【发布时间】:2019-12-05 19:56:23
【问题描述】:
我在 Java Language Specification-8 中遇到了以下语句。它指出 2 个类在编译时是相同的,如果:
- 它们具有相同的二进制名称(外部类的规范名称)。
- 它们的类型参数相同(如果有)。
但是为什么编译器会为
引发重复的类错误class Test<String>{
...
}
class Test<Integer>{
...
}
这里的二进制名称相同,但参数类型不同。我在这里缺少什么?
【问题讨论】:
-
这是相同的类名,但它们的泛型类型参数具有不同的任意名称。
String和Integer是您自己混淆选择的标识符;他们不是java.lang.String和java.lang.Integer。无论你想做什么,这都不是办法。 -
如果我将 Test
更改为 Test 并将 Test 更改为 Test ? -
不是关于引用类型的文档吗?这并不是说 2 个 类 是相同的,而是说 2 个 reference types 类似于
private List<String> myList中的myList的类型。肯定和private List<Integer> myList中的不一样(private添加只是为了澄清,所以很明显这是定义一个字段,对于局部变量也是如此)