概述
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 个错误
最后
以上就是烂漫香菇为你收集整理的代码训练营——泛型实例的全部内容,希望文章能够帮你解决代码训练营——泛型实例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复