泛型<T , K>
泛型(只能传递引用数据类型)
作用:将数据类型作为参数进行传递
泛型的定义:
eg:
<T,K,M,...>
相当于占位符,没有使用时,无法确定其数据类型.
泛型用于的位置
方法
语法:
访问权限修饰符 修饰符 <自定义泛型>返回值类型 方法名(形参列表){
}
优点:
该方法任意一处不确定的数据类型的地方,都可以使用泛型.
举例:
public class FanXing {
public static void main(String[] args) {
String s = text("yyy");
Integer i = text02(99);
}
public static <X> X text01(X xx){
return xx;
}
public static <K> K text02(K kk){
return kk;
}
}
类
语法:
访问权限修饰符 class 类名<自定义泛型>{
}
优点:
该类任意一处不确定的数据类型的地方,都可以使用泛型.
举例:
public class FanXing02 {
public static void main(String[] args) {
Father<String> p1 = new Father<String>("小飞");
Father<Integer> p2 = new Father<Integer>(12);
son<Integer> s = new son<Integer>();
}
}
class Father <K>{
private K k;
public Father(K k) {
}
public Father() {
}
public void text01(K k) {
}
public K text02(K k) {
return k;
}
}
//子类继承有泛型的父类,子类的泛型要包含父类的泛型;
//创建对象的时候,确定类型
class son<T> extends Father<T>{
}
接口中
语法:
访问权限修饰符 interface接口名<自定义泛型>{
}
优点:
//该接口任意一处不确定的数据类型的地方,都可以使用泛型.
//公共常量不能使用泛型
//公共静态方法不能使用泛型
//default修饰的普通方法可以使用
//抽象方法可以使用
举例:
public interface FanXing03 <Q>{
default Q Text(Q q) {
return q;
}
Q text02(Q q);
}
//子接口继承有泛型的父接口,子接口的泛型要包含父接口的泛型;
//创建对象的时候,确定类型
class myClass<Q> implements FanXing03<Q>{
@Override
public Q text02(Q q) {
// TODO Auto-generated method stub
return null;
}
}