判断obj是否为Cat类的对象
请问老师,obj.getclass()==Cat.class中getClass()和.class都是什么意思?判断obj是否为Cat类的对象有什么必要的意义呢?为什么要将obj强制转换为Cat类的对象呢?
源自:Java集合
3-8 添加重复数据
5
收起
正在回答 回答被采纳积分+1
2回答
好帮手慕珊
2019-05-19 17:41:06
你好!使用.class用于获取类型类,比如有一个类Fruits,将Fruits.class输出,得到的如下所示:可以看出是类的信息。Cat.class也是同样的道理。
判断obj是否为Cat类型很有必要,因为如果obj不是Cat类型,进行强制类型转换后,编译不会出错,但运行时会报错。这里也是多一份保障,如果obj不是Cat类的对象,执行下面的代码也没有什么意义了,直接返回false就可以了。
至于为什么要强转,父类的引用可以调用父类中定义的所有属性和方法,而对于子类中定义而父类中没有的方法,父类引用是无法调用的;因此,如果某个方法是子类中有,而父类没有的,不强转直接调用会报错。
如下代码所示解释了这个问题,可以看到在CatTest类中,animal直接调用method2()方法是报错的,而经过强转后的cat是可以调用method2()方法的。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星