java的泛型

2021-05-29 01:00

阅读:500

标签:object   基本类型   ble   其他   com   pre   多个   基本   override   

泛型

1 泛型存在的目的

类型参数化,模板化编程,简化编程

2 泛型的原理

java的泛型参数在运行时会进行类型擦除,擦除后就是object,编译器也会转成object进行编译

那么为啥使用泛型呢?

  1. 更加安全
  2. 更好的可读性

3 泛型的使用

最常用的容器类比如List

泛型类

class Pair2{
    private U u;
    private T t;
    Pair2(U u, T t){
        this.u = u;
        this .t = t;
    }
}

泛型方法

public  A test(T t, T t2){
}

泛型接口

interface Comparable{
    int commpareTo(T o);
}

class TestComparableImpl implements{
    public int commpareTo(T o){
        return 0;   
    }
}

类型参数限定

  1. 上界为某个具体类
  2. 上界为某个接口
  3. 上限为其他类型

简洁的通配符

  1. 只读
  2. 只读
  3. 写入或者比较

通配符类型更加通用简洁,需要注意写类型

4 细节和局限性

泛型类,方法和接口

  1. 基本类型不能使用泛型
  2. 运行时类型不适合泛型
  3. 类型擦除可能引起冲突

类型查除,比如这种

@Data
class Base implements Io{
    private int id;
    @Override
    public void say(Base t){
        System.out.println("base:"+t.getId());
    }
}

class Child extends Base{
    @Override
    public void say(Base t){
        if(! (t instanceof Child)){
            return;
        }
        System.out.println("child:"+t.getId());
    }
}

不能通过new T()创建对象或者数组

泛型支持多个上界 T extends a & b & c

java的泛型

标签:object   基本类型   ble   其他   com   pre   多个   基本   override   

原文地址:https://www.cnblogs.com/beckbi/p/14774781.html


评论


亲,登录后才可以留言!