首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于泛型的一个小疑点

2012-03-13 
关于泛型的一个小问题Java codepackage com.inspirx.mktpublic class TestT {public T get(Integer i)

关于泛型的一个小问题

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,所有会出现编译期异常无法执行!记住泛型在运行期间会被擦出类型!

热点排行