泛型的安全警告

来源:互联网 发布:仪器信息网 网络讲堂 编辑:程序博客网 时间:2024/05/20 18:54

在泛型应用中最好在声明类对象时制定好其内部数据类型,如Info,如果不指定类型,这样用户在使用这样的类时,就会出现不安全操作的警告信息。
【不指定泛型类型】

class Info<T>{    private T var;    public T getVar(){        return var;    }    public void setVar(T var){        this.var=var;    }    public String toString(){        return this.var.toString();    }};public class GenericsDemo10{    public static void main(String args[])    {        Info i=new Info();        i.setVar("张三");        System.out.println("姓名:"+i.getVar());    }}

编译时出现警告信息:

注: GenericsDemo10.java使用了未经检查或不安全的操作。注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

因为程序在使用类时没有指定其泛类型,但是并不影响程序的运行,这是因为在泛型的操作中为了方便用户的使用,就算没有指定泛型类型程序也可以正常使用,为所有的类型统一使用Object进行接收,所以以上程序的var属性实际上就变成了Object类型,也就是在定义时将泛型擦除了,以上程序类似于以下的定义。
【使用Object声明泛型类型】

public class GenericsDemo11{    public static void main(String args[])    {        Info<Object> i=new Info<Object>();        i.setVar("张三");        System.out.println("姓名:"+i.getVar());    }}

运行结果:

姓名:张三

以上程序本身并没有什么意义,因为就算不设置泛型也是Object,但这样做的唯一好处就是,在编译时警告信息消失了。

0 0
原创粉丝点击