老师可以根据这个情况举个例子吗?
老师,因为我觉得this==obj,不就是说id,name,singer属性都相等吗?感觉第二个条件obj.getClass()==Song.class,好像一样的感觉。老师可以举个例子,不满足this.obj,而满足后面那个判断条件的例子吗
正在回答 回答被采纳积分+1
同学你好,可以这么理解,当有两个对象song1和song3时,song1:s001,小太阳,两只老虎;song3:s001,小太阳,两只老虎;
当判断song1.equals(song3)
在equals方法中,先比较this=obj,this指的是当前对象,也就是song1,参数obj是song3,所以先比较song1==song3,如果这两个对象的地址相等,就直接返回true;如果不相等,就继续向下执行
判断(obj.getClass()==Song.class),也就是song3.getClass==song.class,如果相等,就继续执行接下来的代码,进行强转,不相等就返回flase
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
同学你好,if(this==obj){return true;}中this==obj是比较这两个对象的地址,如果地址相等,这两个对象肯定相等,那么就直接返回true,不执行下面的语句
而getClass()方法与class是获取该对象的class(类),if (obj.getClass() == Song.class)是判断参数obj的class与Song类的class是否相等
要先判断两者的Class是否相等,相等的话才能将Object对象转换为Song对象,然后对对象进行比较。否则不能将Object对象转换为Song对象,运行时会报错
比如
song1和song3就符合同学所说的,这两个对象地址不相等,但是传过来的参数song3的class跟song的class是相等的,因为他属于song类的实例;如果这时传一个其他类的实例,比如cat或者dog,这时就不满足第二个条件,无法进行强制转换
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星