Java泛型1——基础

泛型大家肯定都不陌生,java中随处可见泛型,我们编程前期不用怎么关注,但是到了后期,开始写框架,开发高质量的代码的时候,就必须要十分的关注了。
本篇文章,我们就是总结基础,熟悉概念的概念

概念

什么是泛型呢?

  1. 本质: 将类型(类、接口)参数化,可以传递
  2. 通俗讲: 就是 我们在编程中可以动态的传递类型,类型可以不是固定的。目的就是为了灵活

使用

定义方式三种

  1. 在class类(可以是抽象类)中定义:
public class Demo <T>{}
  1. 在inteface中定义
public interface Demo <T>{}
  1. 在方法中定义
public <T> void testGenerics(int a){}
public <T> void testGenerics(T a){}
public <T> T testGenerics(T a){}
public <T extends View> T testGenerics(T a){}
  • T是随便写的,写A,B…都没问题
  • <T> 定义泛型的方式

使用说明

  1. 修饰 成员变量
public T  a;
  1. 作为方法返回值
public T get(){}
  1. 修饰方法的形参
public void get(T params){}

特别说明

你以为这个 T 就可以当作正常的类型使用了吗,这就太天真了

局限性

  1. T修饰的变量 调用问题
    <T>定义的: T 修饰的变量,你不能调用 它的任何属性
    <T extends View>定义的:T 修饰的变量, 你可以访问View的所用的东西。
  2. T是不是正常的类呢?
    测试:调用T的class属性
    测试结果:不能调用。
    3.T 类型强制转换
    Java泛型1——基础
    没有报错可以使用。

使用场景

  1. 数据解析:json或xml等格式的数据 解析为对应的类,给解析器传入类型,返回次类型的实体
  2. 适配器:使用RecycleView时,ViewHolder 需要我们传入我们自己实现的ViewHolder类,适配器讲我们自定义的类当作形参的形式返回给我们使用,我们就可以使用自己的类中定义的View了
  3. 数据结构:HashMap,ArrayList 等,规范存入数据的类型
  4. 数据的传递:RxJava中我们会在使用的时候,就确定处理的类型,在链式调用的时候,的参数,返回值我们都可以自动的定义成我们的类了

假如Java没有泛型
需要使用Object来代替所有可变的类型了,但是这样,需要强制转换,并且还会造成类型混乱

如有不足,或者错误,欢迎大家批评指正 QQ:1187502892