读书人

关于泛型的一个小疑点

发布时间: 2012-03-13 11:21:12 作者: rapoo

关于泛型的一个小问题

Java code
  package com.inspirx.mkt;public class Test<T> {    public T get(Integer i) {                Integer k = i;                return (T)k;    }        public static void main(String[] args) {        Test<String> t = new Test<String>();                t.get(2);    }}


请问各位大侠以上程序执行为什么不出错,而我把Integer强转成String就出错. 但是以上写法难道不是和强转一个意思吗?
这块不理解了.对泛型了解的不深.请各位前辈指较.
注:return (T)k; 这句话有黄叹号.不知道为什么有,好像是没用到怎么事的.

[解决办法]
泛型会在编译期执行类型安全检查,但在运行时 泛型将都由于擦出原因被认作是Object,所以此处的T在运行时只是Object不管你是Integer还是S挺都可以,但是强制类型转换时String就是String,Integer就是Integer,所有会出现编译期异常无法执行!记住泛型在运行期间会被擦出类型!

读书人网 >J2SE开发

热点推荐