Skip to content

Commit 488ccc8

Browse files
committed
2 parents 4e5dd70 + 01af71a commit 488ccc8

File tree

1 file changed

+15
-26
lines changed

1 file changed

+15
-26
lines changed

ch04/04_How_Erasure_Works.md

+15-26
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
## 擦除的工作原理
22

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`
1516

16-
`Java` 中,两种不同的方法不能具有相同的签名。 由于泛型是通过擦除来实现的,因此两种不同的方法不能具有相同擦除的签名。 一个类不能重载其签名具有相同擦除的两个方法,而一个类不能实现具有相同擦除的两个接口。
17+
`Java` 中,两种不同的方法不能具有相同的签名。 由于泛型是通过擦除来实现的,因此两种不同的方法不能具有相同擦除的签名。 一个类不能重载其签名具有相同
18+
擦除的两个方法,而一个类不能实现具有相同擦除的两个接口。
1719

1820
例如,这里有一个有两种便利方法的类。 一个将整数列表中的每个整数加在一起,另一个将字符串列表中的每个字符串连接在一起:
1921

@@ -98,16 +100,3 @@
98100
如果这得到支持,通常需要对桥接方法进行复杂而混乱的定义(参见第 `3.7` 节)。 到目前为止,最简单和最容易理解的选择是禁止这种情况。
99101

100102

101-
102-
103-
104-
105-
106-
107-
108-
109-
110-
111-
112-
113-

0 commit comments

Comments
 (0)