在泛型应用中最好在声明类对象时指定好其内部的数据类型,如 Info<String>
,如果不指定类型,这样用户在使用这样的类时,就会出现不安全的警告信息。
class Info<T>{//此处可以是任意的标识符号,T 是 type 的简称
private T var;//此变量的类型由外部决定
public T getVar(){
return var;//返回值的类型由外部指定
}
public void setVar(T var){
this.var = var;//设置的类型由外部指定
}
public String toString(){
//覆写Object类中的 toString() 方法
return this.var.toString();
}
}
public class Test{
public static void main(String[] args) {
Info i = new Info();//警告没有指定泛型类型
i.setVar("Java");
System.out.println("内容:" + i.getVar());//取得字符串
}
}
此时程序在 使用类时没有指定其泛型类型,所以出现了警告信息,表示的信息是使用了不安全的操作,因为没有指定 var 属性的具体类型。
此时如果使用 Object 声明泛型类型
public class Test{
public static void main(String[] args) {
Info<Object> i = new Info<Object>();//警告没有指定泛型类型
i.setVar("Java");
System.out.println("内容:" + i.getVar());//取得字符串
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
此时程序本身没有任何意义,因为就算不设置泛型也是 Object 但这样做的唯一好处是编译时警告信息消失了
不指定泛型的程序流程图: