Как сравнить два объекта, не зная об их реальном типе - PullRequest
0 голосов
/ 21 марта 2010

Я должен реализовать один связанный список, но он должен поместить объект в соответствующую позицию.Все было в порядке, когда я использую его в сочетании с определенным классом, но когда я попытался сделать его универсальным, а аргумент метода вставки был Object, появилась некоторая проблема.Когда я хочу ввести Object в правильное положение, я должен использовать метод CompareTo, но в классе Object нет метода!Проблема в том, как сравнить два элемента объекта, не зная об их реальных типах.Может быть, я должен использовать универсальный тип класса?Но как насчет CompareTo?Или, может быть, объединить с классом Element и поместить туда CompareTo?Я полагаю, это возможно.:)

public void insert(Object o)
{
   Element el = new Element(o);
   //  initializing and setting iterators

   while(!it.isDone() && ((it.current().getValue())).CompareTo(o)<0) 
                         // it.current() returns Element of List
   {    
      //move interators
   }
//...
}

1 Ответ

5 голосов
/ 21 марта 2010

У вас есть два варианта:

  • заставить класс каждого объекта реализовать java.lang.Comparable и написать там логику сравнения для каждого класса, затем просто принять Comparable вместо Object и вызвать compareTo()
  • создайте comparator свойство вашего списка и установите его на конструкцию. Конкретный компаратор (реализация java.util.Comparator) должен знать, как сравнивать объекты, которые помещаются в этот конкретный экземпляр вашего списка.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...