我是靠谱客的博主 烂漫香菇,最近开发中收集的这篇文章主要介绍代码训练营——泛型实例,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 个错误

最后

以上就是烂漫香菇为你收集整理的代码训练营——泛型实例的全部内容,希望文章能够帮你解决代码训练营——泛型实例所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部