Skip to content

Commit 65de9c0

Browse files
committed
add
Signed-off-by: maskleo <masque@aliyun.com>
1 parent de37206 commit 65de9c0

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

Diff for: ch05/05_Conclusions.md

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
## 结论
2+
3+
回顾一下,我们已经看到了库和客户端的通用版本和旧版本。这些生成等效的类文件,这大大简化了进化。您可以使用具有旧版客户端的通用库,或者使用通用客户端的旧版库。在后一种情况下,您可以使用通用方法签名更新旧式库,无论是对源代码进行的最小更改,还是通过使用存根文件。
4+
5+
支持所有这些的基石是通过擦除来实现泛型的决定,以便泛型代码生成与传统代码基本相同的类文件 - 称为二进制兼容性的属性。通常,以自然的方式添加泛型会导致遗留版本和通用版本是二进制兼容的。但是,有些情况下需要谨慎;这些在 `8.4` 节中讨论。
6+
7+
比较 `Java``C#` 中泛型的设计很有意思。在 `Java` 中,泛型类型在运行时不携带有关类型参数的信息,而数组在运行时包含有关数组元素类型的信息。在 `C#` 中,泛型类型和数组在运行时都包含有关参数和元素类型的信息。每种方法都有优点和缺点。在下一章中,我们将讨论由于 `Java` 没有提供有关类型参数的信息而导致的转换和数组问题,并且这些问题在C#中不会出现。另一方面,`C#` 中的进化要困难得多。遗留和泛型集合类是完全不同的,任何将遗留集合和泛型集合结合起来的尝试都会遇到前面讨论过的包装器的困难。相反,正如我们所看到的,`Java` 中的演变很简单。

0 commit comments

Comments
 (0)