黑马程序员技术交流社区
标题:
集合中的泛型?
[打印本页]
作者:
汪伟楠
时间:
2014-1-16 12:29
标题:
集合中的泛型?
本帖最后由 汪伟楠 于 2014-1-16 18:01 编辑
加了泛型的List集合还能存指定泛型类型以外的类型吗?具体给我讲一讲谢谢了。
int x = 3;
List<String> list = new List<String>();
list.add("xxx");
list.add(x);
作者:
程玉习
时间:
2014-1-16 12:39
一个泛型在声明时允许你传递特定的类型变量:<E>.除此之外,如果E是个类,你可以传递子类;如果E是个接口,你可以传递实现接口的类;你的例子可以通过反射添加,因为编译时会有去类型化。
作者:
大大老伴要跪IT
时间:
2014-1-16 12:41
不可以的,你可以和数组对比下。我们有int[],String[]等类型数组,代表只能存储相同的元素类型。
List<String> list = new List<String>();这个加了泛型之后只能存储String类型的数据了。好处是把运行时的的问题(ClassCastException)提前到了编译期。还能解决类型转换问题。
不过后来我们可以通过反射来存储其他类型的数据。
作者:
贺奕凯
时间:
2014-1-16 12:50
反射啦,话说入学考试才考了这题= =
作者:
wodenhaowzg
时间:
2014-1-16 13:14
不可以,泛型就是用来规范传入的参数类型的。拿视频里面毕老师的比方,你的集合本来用泛型规定是存猪的,你要是存其他动物,比如狗,那猪不就疯了。
作者:
黄晓鑫
时间:
2014-1-16 14:36
不可以 只能传递本类类型或者本类的子类型
作者:
放课后小朋友
时间:
2014-1-16 15:10
因为List集合是可以添加索引的一个集合,可以有重复的元素,所以是有序的,泛型类一旦定义了参数使用某种类型,就不可更改,为了使程序更具灵活性,可以使用泛型方法,将泛型的类型定义成<?>,这样在调用方法的时候就可以传入任意类型的参数了。
作者:
工善器
时间:
2014-1-16 17:43
不可以,只有通过反射才能实现
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2