Моя цель сегодня очень проста, я пытаюсь найти правильный способ реализации интерфейса CompareTo (или Comparable) для моего класса, который расширяет DefaultMutableTreeNode.
Проблема заключается в следующем : Скажем, у меня есть очень хороший класс, который представляет времена.Я уже написал очень хороший метод 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());
}
}
Хорошо, так что, если вы не читали комментарии (что, допустим, вы не читали);Моя проблема в том, что в методе сравнения SpecialTode у меня есть доступ только к userObject.К сожалению, я не знаю, каким был userObject, и поэтому я не могу правильно привести его к вызову правильного метода compareTo!
Это действительно боль, поскольку я уже написал несколько совершенно хорошихСравнить методы во всех классах, которые будут добавлены в мое дерево.Так может ли кто-нибудь помочь парню и дать мне подсказку?
tl; dr - Как получить информацию о типе из универсального объекта, который хранит DefaultMutableTreeNode?Если это невозможно, как мне сравнить два экземпляра SpecialNode, когда я даже не знаю, что они могут содержать!
Заранее спасибо.