代码训练营——泛型实例

来源:互联网 发布:linux 系统 死机 日志 编辑:程序博客网 时间:2024/04/30 02:19
class Worker{}class Student{}//泛型前做法class Tool{    private Object obj;    public void setObject(Object obj)    {        this.obj = obj;    }    public Object getObject()    {        return obj;    }}
class GenericDemo3{    public static void main(String[] args)    {        Tool t = new Tool();        t.setObject(new Student());        Student stu = (Student)t.getObject();    }}

运行正常。
但是当:

Tool t = new Tool();t.setObject(new Student());Worker work = (Worker)t.getObject();

得出:

Exception in thread "main" java.lang.ClassCastException: Student cannot be cast to Worker
//泛型类什么时候定义泛型类?当类中要操作的引用数据类型不确定的时候,早期定义Object来完成扩展。现在定义泛型来完成扩展。class Utils<Temp>{    private Temp t;    public void setObject(Temp t)    {        this.t = t;    }    public Temp getObject()    {        return t;    }}class GenericDemo3{    public static void main(String[] args)    {        Utils<Worker> u = new Utils<Worker>();        u.setObject(new Worker());        Worker w = u.getObject();    }}

运行通过。

Utils<Worker> u = new Utils<Worker>();u.setObject(new Student());Worker w = u.getObject();

运行结果:
GenericDemo3.java:38: 错误: 不兼容的类型: Student无法转换为Worker
u.setObject(new Student());
^
注: 某些消息已经过简化; 请使用 -Xdiags:verbose 重新编译以获得完整输出
1 个错误

0 0
原创粉丝点击