复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Worker
{
}
class Student
{
}
//泛型前做法
class Tool
{
private Object obj;
public void setObject(Object obj)
{
this.obj = obj;
}
public Object getObject()
{
return obj;
}
}
复制代码
1
2
3
4
5
6
7
8
9
class GenericDemo3
{
public static void main(String[] args)
{
Tool t = new Tool();
t.setObject(new Student());
Student stu = (Student)t.getObject();
}
}
运行正常。
但是当:
复制代码
1
2
3
Tool t = new Tool();
t.setObject(new Student());
Worker work = (Worker)t.getObject();
得出:
复制代码
1
Exception in thread "main" java.lang.ClassCastException: Student cannot be cast to Worker
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//泛型类
什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候,
早期定义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();
}
}
运行通过。
复制代码
1
2
3
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 个错误
最后
以上就是烂漫香菇最近收集整理的关于代码训练营——泛型实例的全部内容,更多相关代码训练营——泛型实例内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复