编写示例如下:
/*** Title: 有界泛型类型 类型擦除之后的原始类型 示例
* @author 韩超 2018/2/23 10:36*/static class DemoList{private T t;public T setT(T t){this.t = t;return t;}}public static void main(String[] args) {//有界泛型类型擦除之后的原始类型System.out.println();LOGGER.info("有界泛型类型擦除之后的原始类型:");DemoList
运行结果:
2018-02-23 10:41:51 INFOTypeErasureDemo:70 - 有界泛型类型擦除之后的原始类型:2018-02-23 10:41:51 INFOTypeErasureDemo:72 - class java.lang.Number2018-02-23 10:41:51 INFOTypeErasureDemo:75 - class java.lang.Number setT (class java.lang.Number)2018-02-23 10:41:51 INFOTypeErasureDemo:77 - 有界泛型类型擦除之后的原始类型:父类型
结论:有界泛型类型擦除之后的原始类型:父类型
那么多重有界的泛型类型呢?
编写示例如下:
/*** Title: 多重 有界泛型类型 类型擦除之后的原始类型 示例
* @author 韩超 2018/2/23 10:43*/static class AList{private T t;public T setT(T t){this.t = t;return t;}}static class BList{private T t;public T setT(T t){this.t = t;return t;}}public static void main(String[] args){//多重有界泛型类型擦除之后的原始类型System.out.println();LOGGER.info("多重有界泛型类型擦除之后的原始类型:");AList
运行结果:
2018-02-23 10:47:38 INFOTypeErasureDemo:100 - 多重有界泛型类型擦除之后的原始类型:2018-02-23 10:47:38 INFOTypeErasureDemo:102 - interface java.io.Serializable2018-02-23 10:47:38 INFOTypeErasureDemo:105 - interface java.io.Serializable setT (interface java.io.Serializable)2018-02-23 10:47:38 INFOTypeErasureDemo:108 - interface java.lang.Comparable2018-02-23 10:47:38 INFOTypeErasureDemo:111 - interface java.lang.Comparable setT (interface java.lang.Comparable)2018-02-23 10:47:38 INFOTypeErasureDemo:113 - 多重有界泛型类型擦除之后的原始类型:第一个父类型
结论:多重有界泛型类型擦除之后的原始类型:第一个父类型
3.先检查后编译
既然泛型会在编译阶段进行类型擦除 , 那如何保证编译之前的类型转换安全呢?答案是:通过IDE提供的编译前检查功能
文章插图
再看下面一段代码:
//类型擦除与编译前检查LOGGER.info("类型擦除与编译前检查:");MyGenericsType integerMyGenericsType1 = new MyGenericsType();//类型检查通过integerMyGenericsType1.setT(new Integer(1));//类型检查不通过 , 在IDE中报错integerMyGenericsType1.setT(new Double(2D));
- Java泛型07 : Java自带的泛型Collection、List、Map、
- java 备忘录方法求解,Java备忘录模式
- 业余学java赚钱,不吃透都对不起自己
- Java-透析 -> 查找算法
- Java 大学B组 第十届蓝桥杯 2019年国赛真题
- Java 大学C组 第十届蓝桥杯 2019年国赛真题
- java高校信息管理系统,java高校机房预约管理系统
- java设计模式之 代理模式
- 根据字体类型和大小铺满整个页面 c#实现多页打印)
- [附源码]Java计算机毕业设计SSM翻转课堂微视频管理系统