亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為泛型類型調用重載方法“等于”

為泛型類型調用重載方法“等于”

HUX布斯 2022-09-28 10:21:48
我正在嘗試從泛型類型調用“等于”方法。On run time the type has an overload for 'equals' but the Object.equals(Object obj)? is still triggered.這是調用“等于”的泛型類。public class SortedGroup <T> {    void func(T element1,T element2) {        if (element1.equals(element2))            System.out.println("yes");        else            System.out.println("no");}這是重載“等于”的新類型類public class Person {    private int ID;    public Person(int ID) {        this.ID = ID;    }...    public boolean equals(Person o) {        return (this.ID == o.ID);    }...}這是主要的。Person p1 = new Person(1);Person p2 = new Person(1);SortedGroup<Person> SG = new SortedGroup<Person>();SG.func(p1,p2);}我希望輸出是實際輸出yesno
查看完整描述

1 回答

?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

您不是在重寫 ,而是在重載它(相同的方法名稱,不同的簽名)。若要正確重寫 自,必須匹配方法簽名。這意味著您的方法必須采用 一個 ,而不是一個。equalsequalsObjectequalsObjectPerson

public boolean equals(Object o) {  // ...

最好在任何方法上包含注釋,這些方法旨在重寫超類中的方法或從接口實現方法。如果您這樣做了,那么編譯器會提醒您您的方法沒有重寫 。@Overrideequals

@Override
public boolean equals(Object o) {  // ...

這也意味著,在轉換和比較成員值之前,您需要測試傳入的對象是否確實是 。Person

根據哈希代碼合約,覆蓋與 一致也是很好的做法。hashCodeequals


查看完整回答
反對 回復 2022-09-28
  • 1 回答
  • 0 關注
  • 76 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號