泛型 ---Java学习笔记

目录

泛型

泛型类

泛型方法

泛型接口

泛型的继承和通配符

总结


泛型

是JDK5中引入的特性,可以在编译阶段约束操作的数据类型,并进行检查。

泛型的格式:<引用数据类型>

举例:

 ArrayList<String> list=new ArrayList<>();
        list.add("aaa");
        list.add("李华");
        list.add("***");

包装类:

如果要使用基本数据类型,需要使用其对应的包装类。常用的包装类如下:

byteByte
shortShort
charCharacter
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean

泛型的好处:

1.统一数据类型

2.把运行时期的问题提前到了编译期间,避免了强制类型转换可能出现的异常,因为在编译阶段类型就能确定下来。

泛型的细节:

1.泛型中不能写基本数据类型。

2.指定泛型的具体数据后,传递数据时,可以传入该类型和它的子类型。

3.如果不写泛型,类型默认是Object。

泛型类

使用场景:当一个类中,某个变量的数据类型不确定时,就可以定义带有泛型的类。

格式:

修饰符 class 类名< 类型>{

}

举例:

public class Arraylist<E> {
    
}

注解:此处E可以理解为变量,但不是用来记录数据的,而是记录数据类型,可以写成:T,E,K,V等。

泛型方法

使用场景:方法中参数类型不确定时

解决方案1:使用类名后面定义的泛型               所有方法都能用

解决方案2:在方法申明上定义自己的泛型        只能本方法使用

格式:

修饰符<类型>返回值类型 方法名(类型 变量名){

}

举例:

public static<T> void show(T t){
        
    }
 public static<E> void addAll(ArrayList<E> list, E...e){
        for (int i = 0; i < e.length; i++) {
            E element=e[i];
            list.add(element);
        }
    }

注解: E...e为可变参数,底层是一个数组。

  

泛型接口

格式:

修饰符 interface 接口名<类型>{

}

举例:

public interface List <E>{
    
}

使用方式:

方式1:实现类给出具体类型

方式2:实现类延续泛型,创建对象时再确定

 

泛型的继承和通配符

泛型不具备继承性,但数据具备继承性

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<Ye> list1 = new ArrayList<>();
        ArrayList<Fu> list2 = new ArrayList<>();
        ArrayList<Zi> list3 = new ArrayList<>();
        
        //泛型不具备继承性
        method(list1);
        //method(list2);报错
        //method(list3);报错

        //数据具备继承性
        list1.add(new Ye());
        list1.add(new Zi());
        list1.add(new Fu());
        
    }
    public static void method(ArrayList<Ye> list){
        
    }
}

泛型的通配符:

也表示不确定的类型,但它可以进行类型限定。

使用格式:

extends E:表示可以传递E或者E所有的子类类型

?super E:表示可以传递E或者E所有的父类类型

举例:

 public static void method(ArrayList<? extends Ye> list){

    }

总结

应用场景:

1.如果我们在定义类,方法,接口时候,如果类型不确定,就可以定义泛型类,泛型方法,泛型接口。

2.如果类型不确定,但是能知道以后只能传递某个体系中的,就可以使用泛型通配符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值