|
1 | 1 | ## 擦除的工作原理
|
2 | 2 |
|
3 |
| -擦除类型的定义如下:从参数化类型中删除所有类型参数,并用删除它的边界来替换任何类型变量,或者如果它没有边界,则使用 `Object`;或者如果它具有最左边界的删除 多边界。 这里有些例子: |
4 |
| - |
5 |
| - - `List<Integer>`,`List<String>` 和 `List<List<String>>` 的删除是 `List`。 |
6 |
| - - `List<Integer>[]` 的删除是 `List[]`。 |
7 |
| - - 清除 `List` 本身,对于任何原始类型都是同样的(关于原始类型的解释请参见第 `5.3` 节)。 |
8 |
| - - `int` 的删除本身,类似于任何原始类型。 |
9 |
| - - 整数的删除本身,类似于没有类型参数的任何类型。 |
10 |
| - - 在 `asList` 的定义中删除 `T`(参见 `1.4` 节)是 `Object`,因为 `T` 没有界限。 |
11 |
| - - 在 `max` 的定义中删除 `T`(参见 `3.2` 节)是 `Comparable`,因为 `T` 绑定了 `Comparable<? super T>`。 |
12 |
| - - 在 `max` 的最终定义中删除 `T`(参见 `3.6` 节)是 `Object`,因为 `T` 绑定了 `Object & Comparable <T>`,我们删除最左边的边界。 |
13 |
| - - 拷贝定义中的 `S` 和 `T` 的删除(参见第 `3.6` 节)是可读和可追加的,因为 `S` 绑定了可读和可关闭,并且 `T` 已绑定了可附加和可关闭。 |
14 |
| - - 删除 `LinkedCollection<E>.Node` 或 `LinkedCollection.Node<E>`(请参阅第 `4.3` 节)为 `LinkedCollection.Node`。 |
| 3 | +擦除类型的定义如下:从参数化类型中删除所有类型参数,并用删除它的边界来替换任何类型变量,或者如果它没有边界,则使用 `Object`;或者如果它具有最左边界 |
| 4 | +的删除多边界。 这里有些例子: |
| 5 | + |
| 6 | + - `List<Integer>`,`List<String>` 和 `List<List<String>>` 的删除是 `List`。 |
| 7 | + - `List<Integer>[]` 的删除是 `List[]`。 |
| 8 | + - 清除 `List` 本身,对于任何原始类型都是同样的(关于原始类型的解释请参见第 `5.3` 节)。 |
| 9 | + - `int` 的删除本身,类似于任何原始类型。 |
| 10 | + - 整数的删除本身,类似于没有类型参数的任何类型。 |
| 11 | + - 在 `asList` 的定义中删除 `T`(参见 `1.4` 节)是 `Object`,因为 `T` 没有界限。 |
| 12 | + - 在 `max` 的定义中删除 `T`(参见 `3.2` 节)是 `Comparable`,因为 `T` 绑定了 `Comparable<? super T>`。 |
| 13 | + - 在 `max` 的最终定义中删除 `T`(参见 `3.6` 节)是 `Object`,因为 `T` 绑定了 `Object & Comparable <T>`,我们删除最左边的边界。 |
| 14 | + - 拷贝定义中的 `S` 和 `T` 的删除(参见第 `3.6` 节)是可读和可追加的,因为 `S` 绑定了可读和可关闭,并且 `T` 已绑定了可附加和可关闭。 |
| 15 | + - 删除 `LinkedCollection<E>.Node` 或 `LinkedCollection.Node<E>`(请参阅第 `4.3` 节)为 `LinkedCollection.Node`。 |
15 | 16 |
|
16 |
| -在 `Java` 中,两种不同的方法不能具有相同的签名。 由于泛型是通过擦除来实现的,因此两种不同的方法不能具有相同擦除的签名。 一个类不能重载其签名具有相同擦除的两个方法,而一个类不能实现具有相同擦除的两个接口。 |
| 17 | +在 `Java` 中,两种不同的方法不能具有相同的签名。 由于泛型是通过擦除来实现的,因此两种不同的方法不能具有相同擦除的签名。 一个类不能重载其签名具有相同 |
| 18 | +擦除的两个方法,而一个类不能实现具有相同擦除的两个接口。 |
17 | 19 |
|
18 | 20 | 例如,这里有一个有两种便利方法的类。 一个将整数列表中的每个整数加在一起,另一个将字符串列表中的每个字符串连接在一起:
|
19 | 21 |
|
|
98 | 100 | 如果这得到支持,通常需要对桥接方法进行复杂而混乱的定义(参见第 `3.7` 节)。 到目前为止,最简单和最容易理解的选择是禁止这种情况。
|
99 | 101 |
|
100 | 102 |
|
101 |
| - |
102 |
| - |
103 |
| - |
104 |
| - |
105 |
| - |
106 |
| - |
107 |
| - |
108 |
| - |
109 |
| - |
110 |
| - |
111 |
| - |
112 |
| - |
113 |
| - |
0 commit comments