Java核心知识(三)泛型

1、基本概念

1.1、泛型本质

泛型的本质是参数化类型,它能够指定参数数据类型,统一类型防止出现参数类型转换问题。

1.2、泛型擦除

泛型只在编译阶段有效,编译之后JVM会采取去泛型化的措施,在运行阶段泛型失效。

2、详细介绍

2.1、无边界通配符

<?>是无边界通配符,可以适配任何类型。

public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    list.add(1);
    list.add(2);
    loop(list);
}

private static void loop(List<?> list) {
    for (int i = 0; i < list.size(); i++) {
        System.out.println(list.get(i));
    }
}

2.2、上边界通配符

<? extends > 是上边界通配符,它限定了只有某类或其子类才可以作为通用类型。

public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    list.add(1);
    list.add(2);
    loop(list);
}

private static void loop(List<? extends Integer> list) {
    for (int i = 0; i < list.size(); i++) {
        System.out.println(list.get(i));
    }
}

2.3、下边界通配符

<? super> 是上边界通配符,它限定了只有某类或其父类才可以作为通用类型。

public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    list.add(1);
    list.add(2);
    loop(list);
}

private static void loop(List<? super Integer> list) {
    for (int i = 0; i < list.size(); i++) {
        System.out.println(list.get(i));
    }
}

3、具体使用

3.1、声明

泛型必须先声明,再使用。它的声明方式为<>,可以使用单个大写字母来表示,如<K>,<V>,<E>,<T>

3.2、场景

3.2.1、泛型类

增加代码灵活度,

public class Demo<T> {
    
    private T t;

    public Demo(T t) {
        this.t = t;
    }

    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }
}

3.2.2、泛型方法

在静态方法中,无法使用类中定义的泛型,但可以使用方法定义的泛型。

public class Demo<K, V> {

    /**
     *  使用类定义泛型的普通方法
     */
    public K setT(K k, V v) {
        return (K) null;
    }
    
    /**
     *  使用方法定义泛型的普通方法
     */
    public <T> T method2(T t, V v) {
        return (T) null;
    }
    
	/**
     *  使用方法定义泛型的静态方法
     */
    public static <B> B method3(B b) {
        return (B) null;
    }
}

3.2.3、泛型接口

public interface IDemo<T> {
    T method(T a, T b);
}

public class Demo implements IDemo<Integer> {

    @Override
    public Integer method(Integer a, Integer b) {
        return null;
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值