常用类库之——泛型;入门级详解基础又全面

"本文详细介绍了Java中的泛型概念,包括泛型的定义、使用场景(类、接口、方法)以及范围限定。泛型提高了代码的复用率,避免了类型转换,并在编译阶段有效。同时,文章提到了泛型的通配符使用,如"? extends Parent"和"? super Child"来限制泛型的上下界。最后,泛型在运行时的擦除特性以及其在实际编程中的注意事项也得到了阐述。"
摘要由CSDN通过智能技术生成

泛型

定义:

泛型指得是“参数化的类型”。通俗来讲就是我们要传入一个变量a,但是a具体是什么类型我们暂不确定,就给它定义为一个泛型(成为类型形参),等到后面a类型确定再传入具体类型(成为类型实参)。


使用:

泛型的使用有三种场景:在类中的使用、在接口中的使用、在方法中的使用。

  • 类中的使用:

    // 定义一个泛类
    public class ClassName<T>{
    private T data;
      public T getData() {
        return data;
     }
      public void setData(T data) {
        this.data = data;
     }
    }
    
  • 接口中的使用:

    public interface IntercaceName<T>{
    T getData();
    }
    实现接口时,可以选择指定泛型类型,也可以选择不指定, 如下:
    指定类型:
    public class Interface1 implements IntercaceName<String> {
    private String text;
       @Override
       public String getData() {
         return text;
       }
     }
    不指定类型:
    public class Interface1<T> implements IntercaceName<T> {
    private T data;
       @Override
       public T getData() {
         return data;
       }
     }
    
  • 在方法中的使用:

    private static <T>返回类型 方法名(T a,T b){}
    

泛型的范围限定

泛型的范围限定指的是后面只能有指定的类型才能传入泛型中。

注意的是类名也可以作为一种类型

例如:private Express a;(Express为类)

在泛型范围的限制上有两种场合:

  • 在类上限制类型:
interface Fruit{}
class Apple implements Fruit{}
class Plate<T extends Fruit>{
    T data;
}
Plate<Apple> p = new Plate<>();

第三行在泛型的限定中,无论是接口还是类统一使用extends

结果:这样限定的泛型T,只能是Fruit的子类。

  • 在使用中限制类型:

    这种限制就是使用关键字"?"泛型中的通配符;

    <? extends Parent>指定泛类型的上界
    Plate<? extends Fruit> p = new Plate<Apple>();
    指定了泛型只能为Fruit中的子类
    
    <? super Child>指定了泛型类型的下届
    <? super Apple> p = new Plate<Fruit>();
    泛型只能为Apple的父,或父类的父;
    
    <?> 指定了没有限制的泛型类型
    可以简单理解为Object
    
泛型的作用:
  1. 提高代码的复用率。
  2. 泛型中的类型在使用时自动,不需要进行强转,使用更广泛。
泛型的注意事项:

在编译之后程序会采取去泛型化的措施。
也就是说Java中的泛型,只在编译阶段有效。
在编译过程中,正确检验泛型结果后,会将泛型的相关信息擦出,并且在对象进入和离开方法的边界处添加类型检查和类型转换的方法。也就是说,泛型信息不会进入到运行时阶段。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值