泛型使用及其细节

目录

泛型:

泛型好处:

泛型介绍:

泛型语法:

泛型实例化:

泛型细节:

自定义泛型:

自定义泛型类:

自定义泛型接口:

自定义泛型方法:

泛型的继承与通配符:


泛型:

泛型好处:

1)编译时,检查添加元素的类型,提高了安全性

2)减少了类型转换的次数,提高效率

3)不再提示编译警告

泛型介绍:

1、泛型又称为参数化类型,是jdk 5.0 出现的特性,解决数据类型的安全性问题

2、在声明或实例化时只需要指定好需要的具体类型即可

3、java 泛型可以保证如果程序在编译时没有发出警告,运行时就不会产生ClassCastException 异常。同时,使代码更加简洁、健壮

4、泛型的作用:可以在类声明时通过一个标识表示类中某个属性的类型,或者是某个方法返回值的类型,或者是参数类型

泛型语法:

interface 接口 <T>{} 和 class 类<K,V>{}

//比如 List,ArrayList

说明:

1)其中:T、V、K不代表值,而是表示类型

2)任意字母都可以。常用T表示,是Type 的缩写

泛型实例化:

要在类名后面指定类型参数的值(类型):

1、List<String> strList = new ArrayList<String>();

2、Iterator<Customer> iterator = customer.iterator();

泛型细节:

1)interface List<T> {}, public class HashSet<E>{}...等等

说明:T、E 只是引用类型

2)在给泛型指定具体类型后,可以传入该类型或其子类类型

3)泛型使用形式

List<Integer> list1 = new ArrayList<Integer>();

List<Integer> list1 = new ArrayList<>();

4)List list3 = new ArrayList();         默认给它的泛型是【<E> E就是Object】

自定义泛型:

自定义泛型类:

基本语法:

class 类名 <T,R...>{//可以有多个泛型

成员

}

注意细节:

1)普通成员可以使用泛型(属性,方法)

2)使用泛型的数组,不能够初始化        不能确定数组类型,无法开辟空间

3)静态成员不能使用泛型        静态是和类相关的,当类在加载时,对象还未创建,如果静态方法或属性使用的泛型,JVM就无法进行初始化

4)泛型类的类型,是在创建对象时确定的(因为创建对象时,需要指定确定类型)

5)如果在创建对象时,没有指定类型,默认为 Object

自定义泛型接口:

基本语法:

interface 接口名 <T,R...>{}

注意细节:

1、接口中,静态成员也不能使用泛型(与泛型类规定一致)

2、泛型接口的类型,在继承接口或者实现接口时确定        当进行实现某个子接口时,指定了泛型的类型,在实现父接口的方法时,会使用子接口的泛型类型进行替换父接口中的泛型;在实现接口时,直接指定泛型接口的类型,实现方法时,会进行自动替换

3、没有指定类型,默认为 Object

自定义泛型方法:

基本语法:

修饰符 <T,R...> 返回类型 方法名 (参数列表){}

注意细节:

1)泛型方法中,可以定义在普通类中,也可以定义在泛型类中

2)在泛型方法被调用时,类型会确定

3)public void eat(<E> e){},修饰符后没有<T,R...> eat方法不是泛型方法,而是使用了泛型,泛型方法可以使用类声明的泛型,也可以使用自己声明的泛型

泛型的继承与通配符:

1、泛型不具备继承性:

List<Object> list = new ArrayList<String> ();        这是错误的写法

2、<?>        支持任意泛型类型

3、<? extends A>        支持A类以及A类的子类,规范了泛型上限

4、<? super A>        支持A类以及A类的父类,不限于直接父类,规范了泛型下限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值