layout: post
title: java中的泛型
date: 2019-11-04
tags:
- java
泛型
Collection虽然可以存储各种对象,但实际上通常Collection只存储同一类型对象。例如都是存储字符串对象。因此在JDK5之后,新增 了泛型(Generic)语法,让你在设计API时可以指定类或方法支持泛型,这样我们使用API的时候也变得更为简洁,并得到了编译时期的语法检查。
定义:
可以在类或方法中预支的使用未知的类型,是一种未知的数据类型,当我们不知道使用什么数据类型的时候,可以使用泛型
Tips:一般在创建对象时,将未知类型确定为具体的类型,当没有指定泛型时,默认类型为object类型
好处:
1.将运行时期的ClassCastExcepation转移到了编译时期,编译报错
2.避免了类型强转的麻烦
使用:
1.定义和使用含有泛型的类
格式:
修饰符 class 类名 <代表泛型的变量> {}
2.含有泛型的方法
格式:
修饰符 <代表泛型的变量> 返回值类型 方法名(参数){}
Tips:在方法调用时 确定类型
3.含有泛型的接口
格式:
修饰符 interface 接口名 <代表泛型的变量>{}
实现:
(1).在创建类确定泛型类型
修饰符 Class 类名 implements 接口<确定的泛型类型>{}
(2).在实例化对象时确定类型
修饰符 Class 类名 <泛型> implements 接口<泛型>{}
类名<确定的泛型类型> 对象 = new 类名()<确定的泛型类型>
泛型通配符
定义:
当使用泛型类或者接口时,传递的数据中,泛型类型不确定,可以通过通配符<?>表示.但是一旦使用泛型通配符后,只能使用类中的共性方法,集合中元素的自身的方法无法使用
这种只能接受数据 不能往改结合中存储数据
高级使用: 其实就是在传参的时候做限制
之前设置泛型的时候,实际上可以任意设置的,只要是类就可以设置,但是在java的泛型中可以指定一个泛 型的上限和下限
上限:
格式: 类型名称<? extends 类> 对象名称
意义:只能接受该类型及其子类
下限:
格式: 类型名称<? extends 类> 对象名称
意义:只能接受该类型及其父类
网友评论