Java泛型类型擦除导致的类型转换问题
2015-09-16 11:57
615 查看
初步结论:泛型类型转换不靠谱;
源码:
反编译:
运行异常:
源码:
package com.srie.testjava; public class TestClassDefine4<T> { public static void main(String[] args) { TestClassDefine4<String> t4 = new TestClassDefine4<String>(); String cast = t4.badCast(1); System.out.println(cast); } T badCast(Integer i) { return (T) i; // 此处有warning } }
反编译:
package com.srie.testjava; import java.io.PrintStream; public class TestClassDefine4<T> { public static void main(String[] args) { TestClassDefine4 t4 = new TestClassDefine4(); String cast = (String)t4.badCast(Integer.valueOf(1)); System.out.println(cast); } T badCast(Integer i) { return i; } }
运行异常:
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at com.srie.testjava.TestClassDefine4.main(TestClassDefine4.java:7)
相关文章推荐
- 【Java 之 JVM】Java内存结构概述
- java中将数组、对象、Map、List转换成JSON数据
- JDK源码阅读之List接口
- spring AOP切入点表达式规则
- java 读取mysql中数据 并取出
- Java中泛型数组的使用
- java io详解
- java基础-ArrayList
- 当eclipse导入工程时报"The builder launch configuration could not be found"错误时的解决方法
- Eclipse调试进入JDK源码
- java 图片上写文字
- java中两个for循环的区别
- Java多线程---main与子线程 start与run
- java socket编程
- java 反编译 行号对齐 decompiler如何去掉行号
- spring aop术语
- Android无法导入下载好的项目(和Eclipse中已经存在的项目命名一样导致冲突)解决办法
- eclipse+Jboss配置远程调试
- Java泛型中的通配符的使用
- Eclipse快捷键