泛型


基本概念

简单来说,泛型使得程序具有了将逻辑(算法),和具体的数据类型分离的能力;也就是说,处理逻辑和具体的类型无关;
泛型可以应用于:

  1. 接口
  2. 方法:一个方法时否为泛型,和其所处的类是否为泛型没有关系

常见的T,就是类型参数,泛型就是处理的数据类型不是固定的,可以作为参数传入;


原理

在程序执行时,首先,由Java编译器将java文件编译为.class文件,然后由虚拟机加载并运行.class文件, 对于虚拟机而言,它是不知道泛型的;
对于泛型类,就是由编译器将泛型代码转化为普通代码,用的方法就是强制转化与类型擦除;
也就是先转换为Object,然后再插入必要的强制类型转换;

优势
根据上面的原理,可以知道泛型提供给了我们更好的安全性和可读性;我们无需再手动去转换类型了


类型参数

可以限定其上限为某个具体的类,接口或其他类型参数
如T extends Integer等

通配符
? extends Integer

两种关系:

  • 通配符形式都可以用类型参数的形式进行取代
  • 能用通配符的就用通配符(形式简单)
  • 如果返回值依赖类型参数,或者需要写操作,只能用类型参数
  • ? super T 用于灵活的写入或者比较,不能用类型参数形式取代
  • ? extends T 用于灵活读取
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容