File tree 1 file changed +9
-10
lines changed
1 file changed +9
-10
lines changed Original file line number Diff line number Diff line change 30
30
- 泛型隐式执行没有泛型明确执行的相同的强制转换。如果使用这样转换可能会失败,可能很难调试使用泛型编写的代码。 这就是为什么可以肯定泛型具有以下保证:
31
31
> 保证:通过泛型编译添加的隐式转换从不失败。
32
32
- 这个保证也有一些细小的瑕疵:只有在没有检查的情况下才适用编译器发出警告。 后来我们会详细讨论一下导致发出未经检查的警告以及如何最小化其影响。
33
- - 通过实现泛型擦除有一些重要的影响。 它保持的东西简单 ,在泛型不添加任何根本的新东西。 它使代码变得简单,因为` List ` 只有一个实现,而不是每个类型的一个
34
- 版本。 和它简化了进化 ,因为可以在非泛型和泛型中访问同一个库形式。
35
- - 最后一点值得一些阐述 。 这意味着你不会由于维护两个版本的库而烦恼:一个非通用的旧版本的作品与` Java1.4 ` 或更早版本,以及与` Java5 ` 和` 6 ` 一起工作的通用
36
- 版本字节码级别 ,与不使用泛型的代码看起来一样。
37
- 无需一次切换到泛型,只需更新即可演变您的代码一个程序包,一个类或一个方法开始使用泛型。 我们甚至解释您如何可以为遗留代码声明泛型类型 。 (当然,仅保证当您添加与传统代码相匹配的泛型类型时,上述提及才有效。)
38
- - 通过擦除来实现泛型的另一个结果是数组类型不同参数化类型的关键方法 。执行
33
+ - 通过实现泛型擦除有一些重要的影响。 它保持编写简单 ,在泛型不添加任何根本的新东西。 它使代码变得简单,因为` List ` 只有一个实现,而不是每个类型的一个
34
+ 版本。 同时它简化了版本升级 ,因为可以在非泛型和泛型中访问同一个库形式。
35
+ - 最后值得阐述一点 。 这意味着你不会由于维护两个版本的库而烦恼:一个非通用的旧版本的作品与` Java1.4 ` 或更早版本,以及与` Java5 ` 和` 6 ` 一起工作的通用版本
36
+ ,与不使用泛型的代码看起来一样。 无需一次切换到泛型,只需更新即可演变您的代码一个程序包,一个类或一个方法开始使用泛型。 我们甚至解释您如何可以为遗留
37
+ 的代码声明泛型类型 。 (当然,仅保证当您添加与传统代码相匹配的泛型类型时,上述提及才有效。)
38
+ - 通过类型擦除来实现泛型的另一个结果是数组类型不同参数化类型的关键 。执行
39
39
``` java
40
40
new String [size]
41
41
```
42
- 分配一个数组,并在该数组中存储一个指示其组件是类型的指示串 。 相反,执行:
42
+ 分配一个数组,并在该数组中存储一个指定其组件是类型是字符串 。 相反,执行:
43
43
```java
44
44
new ArrayList<String>()
45
45
```
46
- 分配一个列表,但不在列表中存储任何元素类型的指示。在行话中,我们说Java 会将数组元素类型作为数据类型,
47
- 但并不是指定数组元素的类型元素类型(或其他通用类型)。 稍后,我们将看到这个设计如何缓解进化(见第5 章),
48
- 仅仅强制转换,实例测试和数组创建(见第6 章)。
46
+ 分配一个列表,但不在列表中存储任何元素类型的指定。在行话中,我们说`Java `会将数组元素类型作为数据类型,但并不是指定数组元素的类型元素类型(或其他通
47
+ 用类型)。 稍后,我们将看到这个设计如何缓解进化(见第5 章),仅仅强制转换,实例测试和数组创建(见第6 章)。
49
48
- 泛型与模板`Java `中的泛型类似于`C ++ `中的模板。有关于`Java `泛型之间的关系需要牢记两件重要的事情和`C ++ `模板:语法和语义。
50
49
语法和故意相似语义是故意不同的。
51
50
- 在句法上,尖括号是被选中的,因为它们对于C ++ 用户来说是熟悉的因为方括号很难解析。 但是,有一个区别句法。
You can’t perform that action at this time.
0 commit comments