java泛型-类型擦除
2019独角兽企业重金招聘Python工程师标准>>>
最近了解了一下java的泛型,了解到了“类型擦除”这个东西,现做个简单小结。
java泛型实现的原理可以说就是类型擦除
可以这么理解,如ArrayList<Integer>在编译后变成了ArrayList<Object>,其他类型也是,都变成了原始类型,可以说他的泛型主要是为了防止错误的类型强转。
利用反射可以跳过它的泛型限制:
import java.lang.reflect.Method;
import java.util.ArrayList;public class 泛型 {public static void main(String[] args) throws Exception {ArrayList<Integer> list = new ArrayList<Integer>();list.add(1);list.add(2);// list.getClass().getMethod("add", Object.class).invoke(list, "ssss");Class c = list.getClass();System.out.println(c);Method m = c.getMethod("add", Object.class);m.invoke(list, "其实,我是字符串");m.invoke(list, new User("小明", 16));// 放自己写的类实例m.invoke(list, new User("小红", 14));System.out.println("\nget():" + list.get(3) + "\n");for (Object x : list)System.out.println(x.getClass() + ": " + x);}
}
输出:
class java.util.ArrayListget():User [name=小明, age=16]class java.lang.Integer: 1
class java.lang.Integer: 2
class java.lang.String: 其实,我是字符串
class code.User: User [name=小明, age=16]
class code.User: User [name=小红, age=14]
初步认识,等再了解深点再总结。
转载于:https://my.oschina.net/liujiest/blog/726778
java泛型-类型擦除相关推荐
- Java语言 泛型 类型擦除
初学者只要学习了"Java 编程简介学习路径"的第 20 单元,也可以学习本文. 此文将定义类型擦除,它与 Java 泛型的关系,以及未正确使用泛型时看到的一些神秘错误和警告消息( ...
- java 泛型和类型擦除_关于Java泛型和擦除
java 泛型和类型擦除 "编译期间擦除泛型"是常识(好吧,类型参数和实参实际上是被擦除的). 这是由于"类型擦除"而发生的. 但这是错误的,正如许多开发人员所 ...
- 神奇的互换身体术--java的类型擦除
故事背景 <互换身体>是由环球影业发行的喜剧电影,于2011年8月5日在美国上映.该片由大卫·道金执导,瑞安·雷诺兹.杰森·贝特曼.奥利维亚·王尔德等主演.该片讲述了一位居家好男人和一位蜂 ...
- 关于Java泛型和擦除
"编译期间擦除泛型"是常识(好吧,类型参数和实参实际上就是被擦除的). 这是由于"类型擦除"而发生的. 但这是错误的,正如许多开发人员所假设的那样,删除了< ...
- [转载] JAVA泛型杂谈--擦除,协变,逆变,通配符等
参考链接: Java中的协变返回类型 在<JAVA核心思想>这本书里,关于泛型的章节意外的很多,小小的泛型里其实有很多可以学习的内容,我总结下最近看书的成果. 一. 泛型的好处和应用 最基 ...
- java 泛型 类型形参(Type Parameters) 通配符(wildcard)边界(Bound)
? extends Type 表示Type的子类型(subtypes),Type也包含在内,被称为上界(upper bound) ? super Type表示Type的父类型(supertypes), ...
- java 泛型 类型实参(type argument)
类型形参(type parameters) 给类型实参(type argrments)站位 public interface List<E>{boolean add(E e); }List ...
- java 泛型 类型形参(Type Parameters)
类型形参(type parameters) 给类型实参(type argrments)站位 public interface List<E>{boolean add(E e); }List ...
- java 泛型 类型形参(Type Parameters) 类型
除了基础类型外都可以 List< String > List< Runnable > List< TimeUnit > List< Comparable &g ...
最新文章
- Windows下安装XAMPP,Wordpress
- vs android 打电话,iOS vs. Android:二者真的是在竞争吗?
- asp.net mvc 2 DisplayTemplates 的使用
- 简单了解tengine
- jQuery.Event的一些用法
- 国庆快乐,送3本Python书
- String:字符串常量池
- 福州大学 Problem 2169 shadow
- Linux下PHP5.5编译参数详解
- php 往sftp发送文件夹,通过PHP将文件上传到SFTP服务器(phpseclib)
- b2c京东流程图_京东商城网上交易流程分析
- 中职学校计算机教学中,中职学校计算机教学方式
- 计算机教室消防说明,6.7 消防专用电话的设置
- CopyOnWriteArrayList 有什么特点?
- 常用的神经网络控制结构,神经网络控制的特点
- 计算机sci四区论文,sci四区发表论文是什么水平
- 三菱FX5U系列PLC电池安装方法以及GX Works3内相关参数设置
- 在ESNP中还原内网私接小路由器导致用户无法上网场景
- Axure原型设计相关资源网站(不断更新中……)
- yyyy-MM-dd HH:mm:ss和时间戳之间的转换