泛型知识点

目录

 1. 泛型

 2. 限定通配符与非限定通配符

 1. 泛型

泛型就是将类型参数化,其在编译的时候才确定具体的参数。

可以在类、接口、方法中创建,分别称为反省类、泛型接口、泛型方法。

在jdk1.5之前(泛型是Jdk1.5 之后才有的),没有泛型的概念,要使用Object来实现通用、不同类型的处理:缺点:(1)每次使用时都要强制转换为想要的类型。(2)在编译时编译器不知道类型的转换是否异常,运行时才知道,不安全。

泛型是一种语法糖,基本原理就是类型擦除(使用泛型时候加上的类型参数,编译器在编译的时候去掉类型参数)。泛型只存在于编译阶段,不存在与运行阶段。

public class A<T> {
    private T num;
}

 大部分情况下,泛型类型都会以Object 进行替换,但当使用了extends 和 super 语法时,就不能简单用Object来替换了。

public class A <T extends String> {
    private T num;
}

这种情况下,num的类型会被替换为String,而不是Object。这是类型限定的一个语法,它限定T是String的子类或者就是 String ,无论T是什么类型,String都是父类,不会出现类型不匹配的问题,于是可以使用String进行类型擦除。

使用泛型的好处:

1. 类型安全

(1)泛型的主要目标就是提高Java程序的类型安全。

(2)编译时期就可以检查出因Java类型不正确导致的类型转换异常。

(3)符合越早出错代价越小原则。

2. 消除强制类型转换

(1)使用时直接得到目标类型,消除许多强制类型转换。

(2)所得即所需,减少出错机会。

3. 潜在的性能收益 

(1)所有工作都在编译器完成。

(2)编译器生成的代码与不适用泛型时所写的代码几乎一致。

 2. 限定通配符与非限定通配符

限定通配符: 

<? extends T>  确保类型必须是T的子类或者就是T,设定了类型的上界。

<? super T >  确保类型必须是T的父类或者就是T,设定了类型的下界。

 非限定通配符: 

 非限定通配符<?> ,可以用任意类型来代替。如 List<?>,他可以是List<A>,List<B>,List<C>等等。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值