我是靠谱客的博主 烂漫香菇,这篇文章主要介绍代码训练营——泛型实例,现在分享给大家,希望可以做个参考。

复制代码
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 个错误

最后

以上就是烂漫香菇最近收集整理的关于代码训练营——泛型实例的全部内容,更多相关代码训练营——泛型实例内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部