基本语法
class 类名<T,R,…(可以有多个)>{成员}
注意细节
- 普通成员可以使用泛型(属性、方法)
- 使用泛型的数组不能初始化
- 静态成员不能使用类的泛型
- 泛型类的类型,是在创建对象时确定的(因为创建对象时,需要指定确定类型)
- 如果在创建对象时,没有指定类型,默认为Object
package com.ftn.generic.customGeneric;
//自定义泛型类
public class CustomGeneric {
}
//1.Tiger 后面有泛型,所以我们把 Tiger 称为自定义泛型类
//2.T,R,M 泛型的标识符,一般是单个大写字母
//3.泛型标识符可以有多个
//4.普通成员可以使用泛型(属性、方法)
class Tiger<T,M,R>{
String name;
T t; //属性使用泛型
M m;
R r;
//因为不能确定参数类型,数组在 new 的时候无法确定开辟多大空间,
//所以不能进行初始化
//T[] ts = new T[8];
//因为静态成员是和类相关的,在类加载时,对象还未创建
//所以,如果静态成员使用了泛型,JVM就无法完成初始化
// static R r1;
// public static void m1(M m){
//
// }
public Tiger(String name, T t, M m, R r) { //构造器使用泛型
this.name = name;
this.t = t;
this.m = m;
this.r = r;
}
public R run(R r){ //方法使用泛型,返回类型也可以使用泛型
return r;
}
}