恩,谢谢,明白了很多。再探讨下,谢谢啊:
我用代码试了下,泛型为Integer时,priList.get(0)正常打印输出,不过当它调用priList.get(0).toString()的时候运行就报类型转换异常了,代码如下,真心不懂这块,快晕了,你不吝赐教啊
System.out.println(priList.get(0));// 正常打印,没有转换异常
System.out.println(priList.get(0).toString());// wrong,类型转换异常
如果它调用的是toString方法,为什么显式调用运行会出错,隐式调用则OK呢?
还有我在学泛型限定的时候也有一个小疑惑:
泛型限定在参数中传递还OK,我能理解,但是当它调用到方法的时候有个小问题,代码如下:
HashMap<? extends Person,String> hm = new HashMap<Student,String>();//ok
hm.put(key,value);//此时就不ok了,不论是传递person体系中的哪个类
但是在下限时,有这样一个现象:
HashMap<? super Student,String> hm = new HashMap<Student,String>();//ok
hm.put(new Student(),"itcast");//这时候使用Student类型也ok,我就跪了,但只能使用Student类型
辛苦下,给解解惑。。。泛型真心虐我。。。
|