是否有像大多数单例类一样使用私有构造函数“扩展”类的标准技术?具体而言,我试图扩展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
然后好运。 –