“又是一个很酷的主题。”
“惊喜不断降临!今天是我的生日吗?”
“今天,我要给你介绍泛型。泛型是带有参数的类型。在 Java 中,容器类允许你指出其内部对象的类型。”
“声明泛型变量时,我们指出两个(而不是一个)类型:变量类型和它所存储的数据的类型。”
“ArrayList 是一个很好的示例。创建新的 ArrayList 对象时,可以方便地指出将在此列表内存储的值的类型。”
代码 | 说明 |
---|---|
|
创建名为 list 的 ArrayList 变量。将 ArrayList 对象分配给该变量。 此列表只能存储 String 对象。 |
|
创建名为 list 的 ArrayList 变量。将 ArrayList 对象分配给该变量。此列表可以存储任意值。 |
|
创建名为 list 的 ArrayList 变量。将 ArrayList 对象分配给该变量。 此列表只能存储 Integer 和 int 值。 |
“听起来超级有趣。尤其是有关存储任意类型的值这一部分。”
“只是看起来不错。实际上,如果我们在一种方法中将字符串放入 ArrayList,然后在另一种方法中希望它包含数字,那么程序将会崩溃(以错误终止)。”
“我明白了。”
“现在,我们不会创建我们自己的带类型参数的类。我们只使用现有的类。”
“任何类都可以作为类型参数,甚至是我编写的类?”
“是的。除原始类型外的任何类型。所有类型参数都必须从 Object 类继承。”
“你的意思是,我不能编写 ArrayList<int>?”
“你确实不能编写。但是 Java 开发人员为每种原始类型编写了包装类。这些类继承 Object。看起来如下所示:”
原始类型 | 类 | 列表 |
---|---|---|
int | Integer | ArrayList<Integer> |
double | Double | ArrayList<Double> |
boolean | Boolean | ArrayList<Boolean> |
char | Character | ArrayList<Character> |
byte | Byte | ArrayList<Byte> |
“你可以轻松地把原始类和与其相似的类(包装类)分配给彼此:”
示例 |
---|
|
|
|
|
|
“很棒。我想我将尝试更多地使用 ArrayList。”
GO TO FULL VERSION