java之泛型

优点

泛型能够让我们在编译时而不是在运行时检测出错误

形式泛型类型,E、T
替换泛型类型成为泛型实例化

eg:

//定义一个只能存放String的数组列表
ArrayList<String> list = new ArrayList<>();
list.add("red");//只能添加字符串
list.add(123);//添加其他参数类型会在编译时报错,Java会把123自动包装为new Integer(123)->自动装箱(autoboxing)
注意事项

1、泛型类型必须是引用类型,不能用8大基本类型来泛型实例化(byte、short、int、long、char、boolean、float、double)
2、无须类型转换就可以从一个已指定元素类型的新型表中获取一个值。编译器已经从泛型那知道这个元素的类型了。

ArrayList<String> list = new ArrayList<>();
list.add("red");
String s = list.get(0);//no casting is needed

定义泛型类和接口

可以为类或者接口定义泛型,当实用类来创建对象,或者使用类或者接口来声明引用变量时,必须指定具体的类型

注意事项

1、泛型类可有有多个参数,用都好分隔开,例如<E1,E2,E3>
2、可以定义一个类或接口作为泛型类或者泛型接口的子类型
3、将泛型类型放在类名之后

public class String implements Comparable<String>

定义泛型方法

1、可以将静态方法定义为泛型类型
2、将泛型类型放在方法返回值之前

public static <E> void print(E[] list){
}
//调用方法时的两种方法
classname.<Integer>print(integers);
classname.print(integers);

受限的(bounded)

将泛型指定为另外一种类型的子类型,称为受限的。

<E extends student>//将E指定为student类的泛型子类型
注意事项

1、非受限泛型类型< E>等同于< E extends Object>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值