泛型的重点

1 泛型的好处

泛型的好处:
    1.避免强制类型转换的麻烦
    2.将运行时异常,提前到了编译时期,降低了程序员的工作量
    3.一旦指定泛型,数据类型将被统一
    4.实现代码的模板化,把数据类型当做参数传递

2 泛型可以定义在哪些地方?

    1.可以定义在类上
    2.可以定义在方法(静态方法/非静态方法)上
    3.可以定义在接口上

3 泛型类的定义

泛型类: 定义的类上有属于类自己的泛型 看MyClass03
    定义类时,该类中需要处理某种类型的数据,但是什么类型,不确定,所以定义成泛型
    泛型变量一般用大写字母表示:
        T(Type),E(Element),K(Key),V(Value)

泛型类的定义格式:
    public class 类名<泛型变量> {
        ...
    }
    比如:
    public class 类名<T> {
        ...
    }

泛型类上定义的泛型,什么时间确定具体的类型呢?
    创建该类的对象时,<>中写的是什么类型,泛型就代表什么类型

4 非静态泛型方法

非静态泛型方法: 定义的方法上有属于方法自己的泛型 看MyClass04
    定义方法时,该方法中需要处理某种类型的数据,但是什么类型,不确定,所以定义成泛型
    泛型变量一般用大写字母表示:
        T(Type),E(Element),K(Key),V(Value)

泛型方法的定义格式:
    //<泛型变>: 定义泛型
    //参列*
    修饰符 <泛型变> 返回值类型 方法名称(泛型变量 变量名称) {
        ...
    }
    举例:
    修饰符 <T> 返回值类型 方法名称(T t) {
        ...
    }

方法上定义的泛型,什么时间确定具体的类型呢?
    调用方法时,根据方法参数的类型,确定方法上定义的泛型的具体类型

 5 静态泛型方法

静态泛型方法: 看MyClass05
    静态方法不能使用类上的泛型,必须自己定义

静态泛型方法的定义格式:
    //<泛型变>: 定义泛型
    //参列表中: 使用泛型
    修饰符 static <泛型变> 返回值类型 方法名称(泛型变量 变量名称) {
        ...
    }
    举例:
    修饰符 static <T> 返回值类型 方法名称(T t) {
        ...
    }

静态方法上定义的泛型,什么时间确定具体的类型呢?
    调用方法时,根据方法参数的类型,确定方法上定义的泛型的具体类型

6 泛型接口

 泛型接口: 看MyClass05
    定义接口时,该接口中需要处理某种类型的数据,但是什么类型,不确定,所以定义成泛型
    泛型变量一般用大写字母表示:
        T(Type),E(Element),K(Key),V(Value)

定义接口的定义格式:
    public interface 接口名称<泛型变量> {
        ...
    }
    举例:
    public interface 接口名称<T> {
        ...
    }

接口上定义的泛型,什么时间确定具体的类型呢?
    1.实现类实现接口时,确定接口上泛型的具体类型的话,
        直接指定具体类型

    2.定义实现类时,也不确定接口上的泛型
        该实现类必须定义为泛型类
        而且实现类上的泛型和接口上的泛型要保持一致
        创建实现类对象时,确定具体的类型

7 泛型通配符

泛型通配符: ?
    用来匹配泛型的,但是不能使用?定义泛型

     注意事项:
        1.泛型是不存在多态的,左侧<>中写的类型必须和右侧<>中的类型保持一致(省略右侧<>中的内容)
        2.使用泛型通配符,定义变量:
            List<?> list 可以接收哪些对象?
                只要是List接口实现类的任意泛型对象(创建对象时,只要在<>中写上一种引用类型就可以)都可以

8 泛型的上限

 父类: Person
子类: Worker
子类: Teacher
子类: JavaTeacher

    一个父类的子类可以有任意多个,如何表示出一个父类的任意子类呢?
    ?: 任意一种引用类型
    
泛型的上限:
    ? extends Person: 表示Person类型或者Person类型的任意子类型
    ? extends E: 表示E类型或者E类型的任意子类型

9 泛型的下限

 子类: JavaTeacher
父类: Teacher
父类: Worker
父类: Person

    一个子类的父类可以有任意多个,如何表示出一个子类的任意父类呢?
    ?: 任意一种引用类型

泛型的下限:
    ? super JavaTeacher: 表示JavaTeacher类型或者JavaTeacher类型的任意父类型
    ? extends E: 表示E类型或者E类型的任意父类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值