黑马程序员技术交流社区
标题:
equals方法相关
[打印本页]
作者:
NNERO
时间:
2014-4-29 16:14
标题:
equals方法相关
本帖最后由 NNERO 于 2014-4-29 22:05 编辑
</blockquote></div><div class="blockcode"><blockquote>public class Text111
{
public static void main(String[] args)throws Exception
{
Element f = new Element("NNERO");
Person p = new Person(9);
f.hello(5,"St");//返回false
f.hello("String",p);//返回false
f.hello(5.26,9);//返回false
f.hello(p,p);//返回true
}
}
class Element{
private String name;
Element(String name){
this.name = name;
System.out.println("Hello");
}
public <E> void hello(E x,E y){
System.out.println(x.equals(y));
}
public boolean equals(Object x){
return true;
}
}
class Person{
private int age;
public Person(int age) {
super();
this.age = age;
}
public String toString(){
return age+"";
}
}
复制代码
我这里明明覆写了equals方法,为什么还是会返回false?
作者:
Kelvinhu
时间:
2014-4-29 16:22
public <E> void hello(E x, E y) {
System.out.println(x.equals(y));
}
没覆盖吧。
作者:
Kelvinhu
时间:
2014-4-29 16:24
public static void main(String[] args) throws Exception {
Element f = new Element("NNERO");
//Person p = new Person(9);
f.hello(f, "St");// 返回false
//f.hello("String", p);// 返回false
f.hello(f, 9);// 返回false
//f.hello(p, p);// 返回true
}
复制代码
这样才是覆盖了,你方法又不是调用Element类中你覆盖的方法。
作者:
leon_hm
时间:
2014-4-29 17:54
x.equals(y) 调用的是x对象对应的equals方法
而对于x对象,你传入的类型有int,String,double,Person。
这些都不是Element。
所以不会调用Element的equals.
你可以在你覆盖的equals方法中加一句System.out.println("element equals");
看这方法十分被调用了。
作者:
NNERO
时间:
2014-4-29 22:05
我懂了,要调用Element的equals才行。理解!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2