关于泛型问题

ll小小菜鸟 发布于 2017/04/11 09:54
阅读 114
收藏 0

public class Student {
private String name;
private String sex;
private TestEnum test;
private Date date;

private List<Clazz> list;
public List<Clazz> getList() {
return list;
}
public void setList(List<Clazz> list) {
this.list = list;
}
。。。。。。


}
student中定义了一个有Clazz类泛型的例子,CLazz具体就不贴出,但是在给student赋值
@Test
public void test005() throws Exception{
List list = new ArrayList();
Clazz clazz1 = new Clazz();
Clazz clazz2 = new Clazz();
clazz1.setId(1);
clazz1.setName("aaa");
clazz1.setId(2);
clazz1.setName("bbb");
list.add(clazz1);
list.add(clazz2);
list.add(new Date());

Student student1 = new Student();
student1.setList(list);
System.out.println(student1.getList());
}
结果为
[bean.Clazz@f9f91d, bean.Clazz@151f910, Tue Apr 11 09:47:05 CST 2017]
并没有报错是什么情况,为什么拥有date类型的list也能  set进去

加载中
0
mskf
mskf

只要通过编译,在生成的字节码中就不包括泛型的类型信息。

List list = new ArrayList();这个List没有类型信息,是可以作为setList的参数的。

0
battyman
battyman

所谓的泛型,只是在编译的时候有作用,运行时候是没有泛型信息的,被编译器去掉了,例如:

List<String> a = new ArrayList<String>();

ArrayList b = new ArrayList();

a.getClass()和b.getClass()是一模一样的,没区别。

泛型一般作为给编译器确定类型使用,消除了强制转换之类的操作

返回顶部
顶部