今天我的目标非常简单,我正在尝试为扩展 DefaultMutableTreeNode 的类找到实现 compareTo(或 Comparable)接口的正确方法。
问题是这样的:假设我有一个非常好的代表时代的课程。我已经编写了一个非常好的 compareTo 方法(它可以按我的意愿工作),我已经用 Arrays.sort() 进行了测试,结果非常好。
现在假设我有一个带有一堆不同对象的 JTree,如下所示:
new SpecialNode("Zomg a string!"); // add this group of nodes right here
new SpecialNode(new Time("8:55 PM"));
new SpecialNode(new SomeTypeYouveNeverHeardOf());
因此,作为一名专业程序员,我立即开始编码,没有任何预先考虑。这是我的 SpecialNode 类:
class SpecialNode extends DefaultMutableTreeNode implements Comparator<SpecialNode>
{
public int compareTo(SpecialNode sn)
{
// Not only does this not work correctly (read: at all)
// But, it is sub-par, how do I get the type information out of the userObject
// So I can cast it correctly and call the correct compareTo method!!
return this.getUserObject().toString().compareTo(sn.getUserObject().toString());
}
}
好的,所以如果您没有阅读评论(承认,您没有阅读);我的问题是在 SpecialNode 的 compareTo 方法中,我只能访问 userObject。可悲的是,我不知道 userObject 曾经是什么,因此,我无法正确地将其转换为调用正确的 compareTo 方法!
这真的很痛苦,因为我已经在将添加到我的树的所有类中编写了几个非常好的 compareTo 方法。那么有人可以帮助一个人并给我一个提示吗?
tl;dr -如何从 DefaultMutableTreeNode 存储的通用对象中获取类型信息?如果那不可能,当我什至不知道它们可能包含什么时,我应该如何比较 SpecialNode 的两个实例!
提前致谢。