与大多数 Singleton 类一样,是否有一种标准技术可以使用私有构造函数“扩展”类?具体来说,我正在尝试扩展java.lang.management.ThreadInfo
该类,因为我将它们中的很多添加到 aHashSet
以控制唯一性。但是,我确定两个线程是否相等的方式是不同的,并且与该equals()
方法的默认实现不同。
在这种情况下,扩展类显然不是一种选择。
制作类似包装类的东西是否合理,它ThreadInfo
在构造函数中接受 a 然后用值手动填充所有相关字段,然后覆盖equals()
and 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 标准库中不存在带有自定义比较器的 Set 实现。我想我可以编写自己的哈希集实现,但对于一个简单的情况来说工作量太大了。任何见解都会有所帮助。