java中的equals方法问题

为什么java中的equals方法可以访问其他对象的私有域

微笑听雨
浏览 1526回答 3
3回答

JFSL

一般默认情况下都是默认对比两个对象的地址(String对象除外,String中的equals方法重写了,改成了对比字符串),自己也可以重写,但必须遵循规则。

四无小青年

不知道你所说的equals()访问私有域是在哪看到的,在java中如果是普通对象,那它的equals()只是单纯的使用==来比较的。 //这是jdk1.7中的源码  public boolean equals(Object obj) {         return (this == obj);     }而字符串的equals()也没有你所说的访问私有域//这是jdk1.7中的源码  public boolean equals(Object anObject) {         if (this == anObject) {             return true;         }         if (anObject instanceof String) {             String anotherString = (String) anObject;             int n = value.length;             if (n == anotherString.value.length) {                 char v1[] = value;                 char v2[] = anotherString.value;                 int i = 0;                 while (n-- != 0) {                     if (v1[i] != v2[i])                             return false;                     i++;                 }                 return true;             }         }         return false;     }望采纳

纷飞无悔3342058

equals比较的是字符的hashcode()值,平常我们比较相同的时候一般都是重写equals方法的。我不清楚你说的私有域是什么意思,大概是private所修饰的吧,想访问可以通过反射来访问,反射很强大的!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android
Java