package Generics.CustomGenerics;
/**
* @author 小王宝友
* @version 3.89
* 自定义泛型
* 基本语法
* 自定义泛型类
* class<T,R,V,.....>{...表示可以指定多个泛型
* 成员
* }
*
* 注意事项:
* 1、普通成员可以使用泛型(属性方法)
* 2、使用泛型的数组不能初始化
* 3、静态方法中不能使用类的泛型
* 4、泛型类的类型,是在创建对象时确定的(因为创建对象时,需要指定确定类型)
* 5、如果在创建对象时,没有指定确定类,则系统默认时Object
*/
public class CustomizeGenerics {
public static void main(String[] args) {
}
}
//1、Tiger后面的T,R,M是泛型,所以我们把Tiger称作自定义泛型类
//2、泛型标识符一般是单个大写字母
//3、泛型的标识符可以有多个
class Tiger<T,R,M>{
String name;
T t;//属性
R r;//属性
M m;//属性
//数组在new的时候确定T的类型,就无法在内存中开辟空间
//T[] ts = new T[8];
//在修饰泛型的时候不能使用静态即static修饰
//因为在类加载时,对象还没有创建
//所以,如果静态方法或是静态属性使用了泛型,JVM就无法完成初始化
//ps:泛型只有在对象创建时才会确定泛型的类型,而类的初始化在创建对象之前,所以会报错
//static R r2;
//构造器使用泛型
public Tiger(String name, T t, R r, M m) {
this.name = name;
this.t = t;
this.r = r;
this.m = m;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//方法中使用泛型
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
public R getR() {
return r;
}
public void setR(R r) {
this.r = r;
}
public M getM() {
return m;
}
public void setM(M m) {
this.m = m;
}
}
【JAVASE】泛型类的基础语法和注意事项
最新推荐文章于 2022-06-21 13:30:09 发布