是否有像大多數單例類一樣使用私有構造函數「擴展」類的標準技術?具體而言,我試圖擴展java.lang.management.ThreadInfo
類,因爲我將它們中的很多添加到HashSet
來控制唯一性。但是,我確定兩個線程是否相等的方式是不同的,並且與equals()
方法的默認實現不同。使用私有構造函數擴展類的技巧
在這種情況下,擴展類顯然不是一種選擇。
難道是合理的,使像一個接受構造一個ThreadInfo
一個包裝類,然後手動填充所有相關領域的價值觀,然後將覆蓋equals()
和hashCode()
,還是有更好的方法來做到這一點?
像這樣的東西是什麼,我開始寫,但更好的實現將是理想的:
class ThreadInfoWrapper {
private ThreadInfo info;
ThreadInfoWrapper(ThreadInfo info) {
this.info = info;
}
//Populate instance variables with Thread.State, thread ID, etc.. with
//Getters/setters and all that other stuff
public boolean equals(Object o) { //Unique implementation
}
public int hashCode() { //Whatever implementation
}
}
但是,這感覺就像一個非常迂迴的方式來實現一些基本的功能。我研究了它,並且在Java標準庫中不存在具有自定義比較器的集合的實現。我想我可以編寫我自己的哈希集實現,但對於簡單的情況來說這太多了。任何見解都會有所幫助。
我很確定這樣的類不能被擴展。 –
@JakobWeisblat實際上,它們可以擴展,但只能由內部類來擴展,這對這種情況沒有幫助。我明白,將它們擴展到我自己的類文件中將不起作用。我正在尋找合理的替代方案,並專門查看是否有任何標準做法。搜索一下後我找不到任何東西。 – Kon
然後好運。 –