在學習泛型的過程中,我需要建立person、worker、student 乙個父類兩個子類,但是在建立過程遇到一些問題,先上**
package cn.haiyisoft.domain;
public class personforgeneric implements comparable
public void setname(string name)
public int getage()
public void setage(int age)
@override
public int hashcode()
@override
public boolean equals(object obj) else if (!name.equals(other.name))
return false;
return true;
} public personforgeneric(string name, int age)
public personforgeneric()
@override
public int compareto(personforgeneric o)
}
package cn.haiyisoft.domain;
public class workerforgeneric extends personforgeneric
public void setname(string name)
public int getage()
public void setage(int age)
public workerforgeneric(string name, int age)
@override
public int hashcode()
@override
public boolean equals(object obj) else if (!name.equals(other.name))
return false;
return true;
} @override
public string tostring()
}
package cn.haiyisoft.domain;
public class studentforgeneric extends personforgeneric
public void setname(string name)
public int getage()
public void setage(int age)
@override
public int hashcode()
@override
public boolean equals(object obj) else if (!name.equals(other.name))
return false;
return true;
} public studentforgeneric(string name, int age)
@override
public string tostring()
}
person類實現了comparable介面,worker和student類繼承了person類,按照正常的設計來講,worker和student類不需要再定義name。age以及相應的set和get方法,但是我在兩個類裡又重新定義了name和age 這就導致了person類中的compareto方法有了些問題
正常來講compareto方法裡面應該是這樣的
public int compareto(personforgeneric o)
但是如果在treeset中傳入子類,那麼就會使得this.name等指向了父類的name,但是父類的name是沒有被賦值的(成員變數沒有多型)最後執行時會報空指標,如果一定要堅持的話,那麼compareto方法要改成這樣
public int compareto(personforgeneric o)
C 泛型設計的乙個小陷阱
距離上次發表部落格已經有幾年了.對於沒能堅持更新部落格,實在是感覺到甚是慚愧.閒言少敘,直接切入主題.最近一直在對於公司乙個網路通訊服務程式使用.net core 進行重構.重構的目的有兩個 一是讓程式能夠跨平台執行.二是優化程式 結構是程式的可維護性有所提公升.重構的過程主要由我來設計底層的架構....
乙個簡單的例子學習c 泛型
using system 我們在編寫程式時,經常遇到兩個模組的功能非常相似,只是乙個是處理int資料,另乙個是處理string資料,或者其他自定義的資料型別,但我們沒有辦法,只能分別寫多個方法處理每個資料型別,因為方法的引數型別不同。有沒有一種辦法,在方法中傳入通用的資料型別,這樣不就可以合併 了嗎...
在學習springmvc中遇到的各種bug
學習是一種信仰 bug01 controller public class querycontroller 頁面顯示資訊 一開始也是惑之不解?不過從狀態碼405可以得知錯誤屬於4xx系列,因此錯誤發生在客戶端而不是在服務端。所以排錯的區域就被鎖定在客戶端,同時405狀態碼已經將錯誤原因高度你了 不支...