Java中的泛型
来源:互联网 发布:php 微信开发 编辑:程序博客网 时间:2024/06/07 23:11
【先写个例子,帮助理解泛型的格式】
ArrayList<String> list = new ArrayList<String>();//【标准格式】
ArrayList<Object> list = new ArrayList<String>(); //false
ArrayList<String> list = new ArrayList<Object>(); //false
【允许的,为了照顾新老版本问题 】 Android开发中
ArrayList list3 = new ArrayList<String>(); true 语法没有问题, 但是会报警告
ArrayList<String> list2 = new ArrayList(); true 语法没有问题, 但是会报警告
*********************************************************************************************
集合中的泛型
在集合的代码中,有两个很特殊东西
<? extends E>
<? super E>
E 是泛型
extends 继承
super 调用父类方法的关键字
? 通配符
需求1:定义一个函数可以接受任意类型,但是这个任意类型必须是数值类型
也就是Number类或者Number的子类
这里约束的是【泛型的上限】
Integer extends Number
Float extends Number
Double extends Number
? extends Number
上限:
? extends 要求的数据类型,这里要求能够使用的数据类型是要求数据类型本身或者其子类数组
需求2: 定义一个函数只能接受Integer类型或者其父类类型的集合
下限:
? super 要求的数据类型 这里要求能够使用的数据类型是要求的数据类型本身及其父类
泛型中通配符:
?
************************************************************************************************************
自定义泛型
泛型的运用:
需求:
定义一个方法,可以接收任意类型的参数,而且要求返回值类型也是接收的数据类型
例如:接收String 返回String
接收int 返回int
自定义泛型!
定义一个标识符!,格式 <大写字母>
1.在函数中使用泛型格式:
修饰符 <声明自定义泛型的占位符> 返回值类型//返回值也可以是泛型 函数名(自定义泛型 参数列表, 其他数据类型 参数列表) {
}
泛型中不能直接使用基本数据类型,都是有对应的包装类型
byte --> Byte
short --> Short
int --> Integer
long --> Long
double --> Double
float --> Float
boolean --> Boolean
char --> Character
2.类使用泛型
在自定义类中使用自定义泛型
class 类名<自定义泛型> {
//在这里所用用到和类名一致的自定义泛型的位置,都是相同的数据
}
注意:
1. 类名中声明了自定义泛型的情况下,如果该类中使用了和类名自定义相同的泛型,不能用到
static修饰的方法中 【在static修饰的方法中不能使用类名声明的自定义泛型】
2. 当一个类使用了自定义泛型,在创建该类的对象的时候,给予了泛型的具体类型,那么在这个类
当中所有使用到这个泛型的位置都会变成这个具体的数据类型
3. 如果一个要求有泛型的类对象,在创建的时候没有给予具体的数据类型,所有使用到该泛型的
位置都会变成Object
[问题]
在一个用泛型修饰的类当中,static修饰的方法,能否使用泛型???
如果是static修饰的方法, 指定使用当前方法自定义的泛型
3.接口中使用自定义泛型
interface 接口名<自定义泛型> {
成员变量; //public static final
成员方法; //abstract
}
注意事项:
( 1). 如果一个类【遵从】接口,而且这个接口是带有自定义泛型的,那么这个类就是要在类名之后加上对应
泛型
(2). 如果一个类【遵从】接口,而且这个接口是带有自定义泛型的,那么里面所有【遵从】接口要完成的方法
使用到的泛型,都是接口规定的泛型
(3.) 有两种【遵从】方式,第一种:使用泛型【遵从】 第二种:【遵从】的时候,给定具体的数据类型
PlanA:
这个泛型的具体数据类型是通过用户创建该类的对象时提供的,可以更加具体的使用情况,做成
不同的数据类型
PlanB:
这个泛型在【遵从】时已经确定,那么这个泛型意义不大
[推荐使用PlanA,根据实际情况,确定泛型的类型}
- Java中的泛型
- Java中的泛型
- Java中的泛型
- java中的泛型
- JAVA 中的泛型
- Java中的泛型
- java中的泛型
- Java中的泛型
- Java中的泛型
- JAVA中的泛型
- java中的泛型
- java中的泛型
- Java中的泛型
- Java中的泛型
- java中的泛型
- java中的泛型
- Java中的泛型
- java中的泛型
- 用二维数组写的简单的推箱子,一个人,两个箱子,两个圈的情况。。
- HDU2643 Rank 第二类斯特林数
- permutation
- jsp基础—1
- java System类
- Java中的泛型
- 可变参列表
- 集成springmvc和mybatis环境的Javaweb基础框架,省去新手搭建繁琐环境的苦恼
- Kruskal算法:贪心+并查集=最小生成树
- Open-falcon:Agent源码
- 用zookeeper体验监听服务器是否还活着
- [LeetCode]402. Remove K Digits
- 单例模式的常见应用场景
- 状态模式