zoukankan      html  css  js  c++  java
  • java的泛型

    泛型

    1 泛型存在的目的

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

    2 泛型的原理

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

    那么为啥使用泛型呢?

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

    3 泛型的使用

    最常用的容器类比如List

    泛型类

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

    泛型方法

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

    泛型接口

    interface Comparable<T>{
        int commpareTo(T o);
    }
    
    class TestComparableImpl implements<Interger>{
        public int commpareTo(T o){
            return 0;   
        }
    }
    

    类型参数限定

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

    简洁的通配符

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

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

    4 细节和局限性

    泛型类,方法和接口

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

    类型查除,比如这种

    @Data
    class Base implements Io<Base>{
        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

  • 相关阅读:
    this指向
    this指向
    this指向
    this指向
    a=b=c 连等赋值的分析
    测试应用documentFragment 和 直接操作dom 的区别
    javascript 基本数据类型、引用数据类型
    判断一个变量的具体类型 的终极方案
    判断变量是否为 NaN
    C#稳固基础:传统遍历与迭代器
  • 原文地址:https://www.cnblogs.com/beckbi/p/14774781.html
Copyright © 2011-2022 走看看