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

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

Сообщение Anonymous »

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


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

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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