java泛型用 <> 表示 常用于类 常用于接口 里面字母自定义
<>内可以写任意引用型类型
以ArrayList的为例 在new时:
ArrayList<String> arr=new ArrayList<String>();
这样在使用Array时集合里面只能放String 类型的数据 并且在使用方法时
不用强转 且可以调用String的方法
如:public void text(ArrayList<String> arr)
{
arr.lengh()//可以调用String的方法 获取长度 若不使用泛型 则不可以调用String的方法
}
泛型类的定义:public class 类名<E>{}
泛型方法的定义:public void 方法名(E e){} public E 方法名(){ return E }
泛型的通配符:? 只能做方法的参数
如:public static void show(Arrary<?> arr){ }
//<>里面可以传任何类型的参数
或:public static void show(Arrary<? extends FanXing<String> arr){}//<>里面只能传继承了FanXing这个接口并且参数类型为String的 对象
注意: 实现也是继承的一种
*
- 什么是泛型通配符?
-
? 代表了未知数据类型
-
泛型E可以在创建对象中使用 例如: new ArrayList<String>();
-
?不可以的
-
? 是作为 不知道类型的时候使用 方法参数
-
? extands 类名 只要符合指定继承关系 都接收
-
对未知类进行了限定
-
? super 类名
-
注意:泛型是没有继承概念 ------若需要一个String类型 传Object类型错误