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.创建一个自定义泛型类的对象 MyGenericsstringMyGenerics = 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.不可传入基本数据类型 : 编译时会报错 //MyGenericsmyGenerics = 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!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)