Java - 泛型

"本文深入探讨了Java泛型的益处,包括避免类型转换、提升安全性以及代码复用。讲解了泛型在接口、类和方法中的定义,并通过实例展示了泛型接口、泛型类和泛型方法的使用。同时,阐述了泛型通配符的概念,如"? extends E"和"? super E",以及它们在上下界限制中的作用。此外,还讨论了泛型在方法参数中的灵活应用,如参数化类型和通配符的结合。"
摘要由CSDN通过智能技术生成

1. 泛型的好处

/*
    1.避免强制类型转换的麻烦
    2.将运行时异常,提前到了编译时期,降低了程序员的工作量
    3.一旦指定泛型,数据类型将被统一
    4.实现代码的模板化,把数据类型当做参数传递
*/

2. 泛型的定义

  • 泛型变量名通常用 E 、T、K、V
  • 泛型可定义的位置:
    • 泛型接口
    • 泛型类
    • 泛型方法

2.1 泛型接口

public interface 接口名称<泛型变量> {
    ...
}
  • 泛型接口可以约束实现类,实现类在实现接口时传入自己要操作的数据类型,这样重写的方法都将是针对该类型的。

2.2 泛型类

public class 类名<泛型变量> {
    ...
}

2.3 泛型方法

非静态方法:
	修饰符 <泛型变量> 返回值类型 方法名称(泛型变量 变量名称) {
	   ...
	}

静态泛型方法:
	修饰符 static <泛型变> 返回值类型 方法名称(泛型变量 变量名称) {
       ...
    }
package fanxing_test;

public class Test02<E> {//泛型类,创建对象时确定具体类型

    private E e;//

    public void method(E e){}

    public <T> void m(T t,E e){ //泛型方法,两个形参,一个是泛型方法的变量,一个是泛型类的变量
        System.out.println(t);
        System.out.println(e);
    }

    public static <K> void method2(K s){//静态泛型方法中不能用泛型类变量。
        System.out.println();
    }
    
	//泛型方法定义可以用extends
    public <E extends Person> void  method4(ArrayList<E> list){
        for (E e : list) {
            System.out.print(e);
        }
        System.out.println();
    }

    public <E> void  method5(ArrayList<? extends E> list){
        for (E e : list) {
            System.out.print(e);
        }
        System.out.println();
    }

	//泛型方法定义时 不能用super,没意义
	/*
    public <E super JavaTeacher> void  method5(ArrayList<E> list){
        for (E e : list) {
            System.out.print(e);
        }
        System.out.println();
    }
    */
}

  • 方法中可以用泛型类接受一切实际类型的参数方法更具有通用性

3. 泛型通配符、上下限

  • ? 泛型通配符:用来匹配泛型的
    • List<?> list 理解为它是各种泛型List集合对象的父类
  • ? extends E泛型上限: 表示匹配 E类型或者E类型的子类
  • ? super E 泛型下限 : 表示匹配E类型或者E类型的父类
  • 注:
    泛型是不存在多态的,定义时等号左边<>中的类型和右边的<>的类型要一致,右侧<>中可省略。

4. 参考资料

B站黑马视频

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值