(JAVA)-泛型

如果没有给集合指定类型,默认所有类型都是objest,在获取数据时,无法使用他的特有行为

因此泛型在JDK5引入,可以在编译阶段约束操作的数据类型

格式:

<数据类型>

注意:

泛型只支持引用数据类型

java是伪泛型,数据添加到集合里时还是会当成Object类型

细节:

泛型中不能写基本数据类型

指定泛型的具体类型,传递数据时可以添加该类子类类型

不写泛型,默认object类型

泛型类

 当类中的某个变量数据类型不确定时,可以定义带有泛型的类,本类所有方法都能使用

修饰符 class 类名<E|任意字母>{

}

泛型方法

只有一个方法形参不确定时,可以定义带有泛型的方法

修饰符 <E|任意字母> 返回值类型 方法名(类型 变量名){}

当方法调用时类型确定下来

泛型接口

1.实现类给出具体类型

定义了一个只能添加String类型的List的子类

2.实现类延续泛型,创建对象时候再给出类型

泛型的类型绑定

有时候,你会希望泛型类型只能是某一部分类型,比如操作数据的时候,你会希望是Number或其子类类型。这个想法其实就是给泛型参数添加一个界限

<T extends Type>

此定义表示T跟Type应该是继承关系或实现关系。T和Type可以是类,也可以是接口。

类型绑定有两个作用:

1、对填充的泛型加以限定 ,类型没有派生自Type则会报错。

2、使用泛型变量T时,可以使用Type内部的函数。

有关绑定限定的用法,其实我们可以同时绑定多个绑定,用&连接

<T extends Type1&Type2>

泛型的继承和通配符

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

底下是一个例子

class fu{}
class zi extend fu{}


class test
{
public static void main(){
ArrayList<fu> list1=new ArrayList<>();
ArrayList<zi> list2=new ArrayList<>();

method(list2)//报错
list1.add(new(zi));//不报错,多态

}

public static void method(ArrayList<fu> list){}

}

当方法参数不确定类型时,使用泛型

public static void <E> method(ArrayList<E> list){}

}

但此时方法能接收所有类型的数据,当,就可以使用泛型的通配符,来进行类型的限定

?表达不确定的类型,方法前面可以不用限定

? extend E:表达E或E所有的子类类型

? super E表达E或E所有的父类类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值