為什么java中的equals方法可以訪問其他對象的私有域
3 回答

四無小青年
TA貢獻88條經驗 獲得超43個贊
不知道你所說的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
TA貢獻4條經驗 獲得超0個贊
equals比較的是字符的hashcode()值,平常我們比較相同的時候一般都是重寫equals方法的。我不清楚你說的私有域是什么意思,大概是private所修飾的吧,想訪問可以通過反射來訪問,反射很強大的!
添加回答
舉報
0/150
提交
取消