泛型:可以在编译阶段约束操作的数据类型,并进行检查
泛型的格式是 : <数据类型>
注意 :泛型只能支持引用数据类型
泛型的好处:
统一数据类型。
把运行时期的问题提前到了编译期间,避免了强制类型转换可能出现的异常,因为在编译阶段类型就能确定下来。
八大基本数据类型所对应的包装类
/**
* byte ==> Byte
* short===>Short
* int===>Integer
* long===>Long
* boolean-===>Boolean
* char===>Character
* float===>Float
* double====>Double
*/
自定义泛型在方法中的使用
语法格式:
public <无意义的占位符> 返回值的类型 方法的名字(参数){
}
无意义的占位符: 可以是任意的字符 但是都是大写 开发中一般是 T(Type) E(Element) ?(未知)
无参无返回值 、、 没必要使用泛型的
有参无返回值 、、 可以使用
无参有返回值 、、没必要使用泛型的
有参有返回值 、、 写起来有局限性
//有参的才有点用途
泛型类【重点】
和之前的普通类不一样
语法格式:
class 类名 <无意义的占位符> {
}
泛型抽象类
语法格式:
abstract class 类 <无意义的占位符> {
}
package com.qf.b_fanxing;
abstract class A<T> { abstract void test(T t); } //1.在继承抽象类时候 子类也必须带有和父类相同的泛型占位符