class 类名 <泛型标识,泛型标识…>{
private 泛型标识 属性名;
…
}
2.自定义一个泛型类 2.1 定义一个泛型类常用的泛型标识 : T,E,K,V (对应符号的具体含义在后面进行补充)
public class MyGenerics2.2 在程序中使用泛型类{ //1.有一个普通的属性 private int num; //2.有一个泛型类型的属性 private T t; //3.正常的构造方法 public MyGenerics() { } public MyGenerics(int num, T t) { this.num = num; this.t = t; } //4.正常的getter/setter 方法 public int getNum() { return num; } public void setNum(int num) { this.num = num; } public T getT() { return t; } public void setT(T t) { this.t = t; } //5.正常的toString 方法 @Override public String toString() { return "MyGenerics{" + "num=" + num + ", t=" + t + '}'; } }
public class Application {
public static void main(String[] args) {
//1.创建一个自定义泛型类的对象
MyGenerics stringMyGenerics = new MyGenerics<>();
//2.调用setter方法设置值
stringMyGenerics.setNum(100);
stringMyGenerics.setT("hello world"); // 也是正常的调用
//3.调用toString方法查看对象属性的值
System.out.println(stringMyGenerics);
}
}
# 运行结果 : 就像使用一个正常类一样
MyGenerics{num=100, t=hello world}
3.泛型类的使用注意事项
- 泛型类在使用时如果没有指定泛型的类型,则默认是 Object类型
- 泛型的类型参数,只能传入 类类型,不可以传入基本数据类型
- 同一个泛型类的运行时类型都是同一个
public class Application {
public static void main(String[] args) {
//1.未指明泛型类型时默认是 Object类型
MyGenerics objectMyGenerics = new MyGenerics<>();
Object t = objectMyGenerics.getT(); // 类型是Object
//2.不可传入基本数据类型 : 编译时会报错
//MyGenerics myGenerics = new MyGenerics();
//3.运行时类型都是一致的
MyGenerics booleanMyGenerics = new MyGenerics<>();
MyGenerics integerMyGenerics = new MyGenerics<>();
System.out.println(booleanMyGenerics.getClass());
System.out.println(integerMyGenerics.getClass());
System.out.println(booleanMyGenerics.getClass() == integerMyGenerics.getClass());
}
}
# 运行结果: class com.northcastle.genericsclass.MyGenerics class com.northcastle.genericsclass.MyGenerics true4.完成
Congratulations!
You are one step closer to success!



