File tree Expand file tree Collapse file tree 1 file changed +11
-2
lines changed Expand file tree Collapse file tree 1 file changed +11
-2
lines changed Original file line number Diff line number Diff line change 1+ 《《《 [ 返回首页] ( ../README.md ) <br />
2+ 《《《 [ 上一节] ( 00_Reification.md )
3+
14## 可定义类型
25
3- 在 ` Java ` 中,数组的类型是用其组件类型来表示的,而参数化类型的类型是在没有其类型参数的情况下被指定的。 例如,一个数组的数组将带有指定类型 ` Number [] ` ,而一个数字列表将带有指定类型 ` ArrayList ` ,而不是 ` ArrayList<Number> ` ; 原始类型,而不是参数化类型被通用化。 当然,列表中的每个元素都会附加一个指定类型 - 比如整数或双精度 - 但这与指定参数类型并不相同。 如果列表中的每个元素都是整数,我们将无法判断是否有 ` ArrayList<Integer> ` ,` ArrayList<Number> ` 或 ` ArrayList<Object> ` ; 如果列表为空,我们将无法确定它是什么样的空列表。
6+ 在 ` Java ` 中,数组的类型是用其组件类型来表示的,而参数化类型的类型是在没有其类型参数的情况下被指定的。 例如,一个数组的数组将带有指定类型
7+ ` Number [] ` ,而一个数字列表将带有指定类型 ` ArrayList ` ,而不是 ` ArrayList<Number> ` ; 原始类型,而不是参数化类型被通用化。 当然,列表中的每个元素都会附
8+ 加一个指定类型 - 比如整数或双精度 - 但这与指定参数类型并不相同。 如果列表中的每个元素都是整数,我们将无法判断是否有 ` ArrayList<Integer> ` ,
9+ ` ArrayList<Number> ` 或 ` ArrayList<Object> ` ; 如果列表为空,我们将无法确定它是什么样的空列表。
410
511在 ` Java ` 中,如果类型在运行时完全表示,即擦除不会删除任何有用的信息,那么我们说类型是可重用的。 准确地说,如果是以下类型之一,则类型是可验证的:
612
1319 - 带有实际参数的参数化类型(例如 ` List<Number> ` ,` ArrayList<String> ` 或 ` Map<String,Integer> ` )
1420 - 带有边界的参数化类型(例如 ` List<? extends Number> ` 或 ` Comparable <? super String> ` )
1521
16- 所以类型 ` List<? extends Object> ` 不可赋值,尽管它与 ` List<?> ` 等效。 以这种方式定义可定义类型使得它们易于在语法上识别。
22+ 所以类型 ` List<? extends Object> ` 不可赋值,尽管它与 ` List<?> ` 等效。 以这种方式定义可定义类型使得它们易于在语法上识别。
23+
24+ 《《《 [ 下一节] ( 02_Instance_Tests_and_Casts.md ) <br />
25+ 《《《 [ 返回首页] ( ../README.md )
You can’t perform that action at this time.
0 commit comments