Как проверить, можно ли использовать компаратор для объекта неизвестного типа?JAVA

Программисты JAVA общаются здесь
Anonymous
Как проверить, можно ли использовать компаратор для объекта неизвестного типа?

Сообщение Anonymous »

Скажем, я реализую отсортированный набор на Java с помощью общего , например двоичного дерева поиска. Набор использует Comparator для упорядочивания своих элементов. Для простоты предположим, что компаратор всегда определен.
Большинство коллекций определяют contains(Object), где аргумент имеет тип Object, а не общий тип коллекции. введите T.
Как реализуется такой метод? Вы не можете использовать компаратор для аргумента, поскольку не знаете тип аргумента. Вы даже не можете проверить, разрешено ли приведение.
Я могу представить только два решения, оба плохие:
  • Набор должен быть создан с помощью объекта Class, чтобы я мог проверить, можно ли привести аргумент. Но очевидно, что структура коллекций Java не требует этого, поэтому должен быть способ обойти это.
  • Просто выполните приведение и перехватите исключение ClassCastException, которое может возникнуть. Это кажется неприятным.


Подробнее здесь: https://stackoverflow.com/questions/790 ... known-type

Вернуться в «JAVA»