是否有一种标准技术来“扩展”具有私有构造函数的类,就像大多数Singleton类一样?具体来说,我正在尝试扩展
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标准库中不存在使用自定义比较器的集合的实现.我想我可以编写自己的哈希集实现,但这对于一个简单的情况来说太过分了.任何见解都会有所帮助.