MVP系列文章(五)- 泛型擦除

前言

MVP系列文章
MVP系列文章(一) – MVC 与 MVP
MVP系列文章(二) – 优化attach()、detach()方法
MVP系列文章(三) – 动态代理优化每次判断 View != null
MVP系列文章(四)- GC回收原理分析
MVP系列文章(五)- 泛型擦除
MVP系列文章(六)- 代码架构与运行时架构
MVP系列文章(七)- 知识梳理

1. 泛型擦除

编译器在运行的时候,会把我们的泛型进行擦除,一般是针对系统的泛型,如List<String>、List<Integer>。而我们自己指定的泛型信息一般都是会被保留的,如List<UserInfo>、List<BasePresenter>等自定义的类型;

如下:
List<String> list = new ArrayList() ;
list.add(“1”) ;
list.add(“2”) ;

上边的泛型在没有编译之前,起到一个约束作用,也就是说,给List集合限定泛型是String类型,写代码的时候就只能是同一类型,就只能 add(“1”),而不能 add(1),这样 add(1)会报错;

在编译成字节码后,泛型会进行擦除,就会变成 List list = new ArrayList();

    原文作者:世道无情
    原文地址: https://www.jianshu.com/p/c005e6d3a8dd
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞