java泛型代码的处理
来源:互联网 发布:淘宝游戏币怎么交易 编辑:程序博客网 时间:2024/06/02 04:42
泛型代码和虚拟机
对于虚拟机来说,没有泛型类型对象,所有对象都属于普通类
+ 任何一个泛型类都提供了一个相应的原始类型(原始类型就是删除类型参数后的泛型类型名)
+ 擦除类型变量,并且替换为限定类型(无限定的变量用Object)
在擦除类型的时候如果没有限定类型就用Object,如果有就采用第一个限定类型
Pair 擦除类型后如下所示
public class Pair{ private Ojbect fisrt; private Object second; public Pair(Object first,Object scond){ this.first = first; this.second = second; } public Object getFirst(){ return first; } public Object getSecond(){ return sencod; } public void setFirst(Object newValue){ first = newValue; } public void setSecond(Object newValue){ second = newValue; } }
Interval有限定类型擦除后的表达式
- 未擦除前
java
public class Interval<T extends Comparable & Serializable> implements Serializable{
private T lower;
private T upper;
...
public Interval(T frist,T second){
if(first.compareTo(second<=0 )){
lower = first;
upper = second;
}
}
} 擦除后的类型
public class Interval implements Serializable{ private Comparable lower; private Comparable upper; ... public Interval(Comparable frist,Comparable second){ if(first.compareTo(second<=0 )){ lower = first; upper = second; } } }
在这里如果我们切换限定: class Interval
翻译泛型表达式
当程序调用泛型方法时,如果擦除返回类型,编译器将插入强制类型转换
Pair<Employee> buddies = ...; Employee buddy = buddies.getFirst();
擦除后getFirst的返回类型将返回Object类型.编译器将自动插入Employee类的强制类型转换。编辑器将把这个方法的调用编译为两条虚拟机指定:
1. 将原始方法Pair.getFisrt的调用
2. 将返回的Object类型强制转换为Employee类型
翻译泛型方法
类型擦除也会出现在泛型方法中.
public static <T extends Comprable> T min(T[] a)
类型擦除后如下
publci static Comparable min(Comparable[] a)
java泛型转换的事实
- 虚拟机中没有泛型,只有普通的类方法
- 所有的类型参数都要用他们的限定类型替换
- 桥方法被合成来保持多态
- 为了保持类型安全性,必要时插入强制类型转换
阅读全文
0 0
- java泛型代码的处理
- 关于Java异常处理的学习代码
- java定时处理任务的代码
- Java的图像处理代码示例
- java虚拟机对代码的处理方式
- java图片处理代码
- java 图片处理代码
- java代码图片处理
- 09 java的代码的执行顺序和异常处理
- 不知道想干啥的JAVA 处理日期代码
- "Java中可复用事件处理的设计与实现"代码
- java中对全角和半角的转换处理代码
- 16行代码展现java内存处理的bug
- java中jni调用不需要配置dll的处理代码
- Java实现基于内容的数字图像处理代码
- 关于JAVA异常处理机制的实验代码
- java中对于异常的处理,代码简单描述
- Java编码规范,让你的代码赏心悦目--错误处理
- RabbitMQ入门-6(单发送多接收)
- OSPF部分配置介绍
- java按位操作符
- 常用查看Java程序运行情况命令
- 啦啦啦,庆祝一下子自己的博客开通!
- java泛型代码的处理
- Codeforces Gym
- 查找gitlab-ci runner历史版本
- ocx修改ID和名字
- ajax 设置Access-Control-Allow-Origin实现跨域访问
- 这里的人都想着做李白,却卷入现金贷漩涡不能自拔
- 自定义控件那些事儿 ----- 七【绘制Bitmap】
- linux load average
- jQuery中动态生成数据使用on绑定无效的问题;