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泛型-类型擦除相关推荐

  1. Java语言 泛型 类型擦除

    初学者只要学习了"Java 编程简介学习路径"的第 20 单元,也可以学习本文. 此文将定义类型擦除,它与 Java 泛型的关系,以及未正确使用泛型时看到的一些神秘错误和警告消息( ...

  2. java 泛型和类型擦除_关于Java泛型和擦除

    java 泛型和类型擦除 "编译期间擦除泛型"是常识(好吧,类型参数和实参实际上是被擦除的). 这是由于"类型擦除"而发生的. 但这是错误的,正如许多开发人员所 ...

  3. 神奇的互换身体术--java的类型擦除

    故事背景 <互换身体>是由环球影业发行的喜剧电影,于2011年8月5日在美国上映.该片由大卫·道金执导,瑞安·雷诺兹.杰森·贝特曼.奥利维亚·王尔德等主演.该片讲述了一位居家好男人和一位蜂 ...

  4. 关于Java泛型和擦除

    "编译期间擦除泛型"是常识(好吧,类型参数和实参实际上就是被擦除的). 这是由于"类型擦除"而发生的. 但这是错误的,正如许多开发人员所假设的那样,删除了< ...

  5. [转载] JAVA泛型杂谈--擦除,协变,逆变,通配符等

    参考链接: Java中的协变返回类型 在<JAVA核心思想>这本书里,关于泛型的章节意外的很多,小小的泛型里其实有很多可以学习的内容,我总结下最近看书的成果. 一. 泛型的好处和应用 最基 ...

  6. java 泛型 类型形参(Type Parameters) 通配符(wildcard)边界(Bound)

    ? extends Type 表示Type的子类型(subtypes),Type也包含在内,被称为上界(upper bound) ? super Type表示Type的父类型(supertypes), ...

  7. java 泛型 类型实参(type argument)

    类型形参(type parameters) 给类型实参(type argrments)站位 public interface List<E>{boolean add(E e); }List ...

  8. java 泛型 类型形参(Type Parameters)

    类型形参(type parameters) 给类型实参(type argrments)站位 public interface List<E>{boolean add(E e); }List ...

  9. java 泛型 类型形参(Type Parameters) 类型

    除了基础类型外都可以 List< String > List< Runnable > List< TimeUnit > List< Comparable &g ...

最新文章

  1. Windows下安装XAMPP,Wordpress
  2. vs android 打电话,iOS vs. Android:二者真的是在竞争吗?
  3. asp.net mvc 2 DisplayTemplates 的使用
  4. 简单了解tengine
  5. jQuery.Event的一些用法
  6. 国庆快乐,送3本Python书
  7. String:字符串常量池
  8. 福州大学 Problem 2169 shadow
  9. Linux下PHP5.5编译参数详解
  10. php 往sftp发送文件夹,通过PHP将文件上传到SFTP服务器(phpseclib)
  11. b2c京东流程图_京东商城网上交易流程分析
  12. 中职学校计算机教学中,中职学校计算机教学方式
  13. 计算机教室消防说明,6.7 消防专用电话的设置
  14. CopyOnWriteArrayList 有什么特点?
  15. 常用的神经网络控制结构,神经网络控制的特点
  16. 计算机sci四区论文,sci四区发表论文是什么水平
  17. 三菱FX5U系列PLC电池安装方法以及GX Works3内相关参数设置
  18. 在ESNP中还原内网私接小路由器导致用户无法上网场景
  19. Axure原型设计相关资源网站(不断更新中……)
  20. yyyy-MM-dd HH:mm:ss和时间戳之间的转换

热门文章

  1. 基于intellij和meavn的整合开发struts2框架的web程序
  2. JAVA课堂作业整理一
  3. 浅谈 underscore 内部方法 group 的设计原理
  4. 替换index和show中select_tag的方法
  5. 判断是否是电脑访问网站 1号店页面判断脚本
  6. kbengine0.2.3发布,开源分布式游戏服务端引擎
  7. 【原创翻译】如何阅读一个GO程序
  8. 字段和字段的参数,查询的13个方法,但标的双下划线外键和多对多操作
  9. C++ 高质量程序设计指南读书笔记
  10. java 的集合说明