泛型梳理

使用意义

        主要有两种用途

  1. 泛型方法主要用于容器类,Java中任何方法,包括静态的(注意,泛型类不允许在静态环境中使用)和非静态的,均可以用泛型来定义。泛型使编译器可以在编译期间对类型进行检查以提高类型安全,减少运行时由于对象类型不匹配引发的异常。
  2. 可以像传递参数那样,将类型像参数那样传递,这样就可以方便编译器进行安全检查。

实现原理

      泛型的实现是靠类型擦除技术 类型擦除是在编译期完成的 也就是在编译期 编译器会将泛型的类型参数都擦除成它的限定类型,如果没有则擦除为object类型之后在获取的时候再强制类型转换为对应的类型。 在运行期间并没有泛型的任何信息,因此也没有优化。

分类

  1. 修饰限制方法,  修饰限制参数
  2. 修饰限制类   

用例

    泛型方法

  • 需要在方法返回类型前使用泛型限定
  • 在方法参数没使用泛型变量
  • 类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。
  • 泛型方法体的声明和其他方法一样。注意类型参数只能代表引用型类型,不能是原始类型(像int,double,char的等)

 

 public static <T extends Comparable<T>> T maximum(T x, T y, T z){
  return T;
}

泛型类

  • 在类名后面添加了类型参数声明部分
  • 可以声明多个泛型变量,泛型变量只能是引用类型。

 

public class Box<T> {}

 

参数

通配符?

            ?可以用来表示某个具体的类型,可以使用 <? extend Box> 或 <? super Box>.分别表示某个类继承了box和box的某个父类

限定符T

        所谓限定就是通过某些符号表示某一个类型,通过 implement ,extend super 来限制需要传输的类型参数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值