У меня есть класс, который содержит различные типы и реализует интерфейс Iterable<Object>
. Но для меня очень важно, что я могу сравнивать элементы. Я знаю, что я не могу написать что-то вроде: Iterable<Object & Comparable<?>>
, так что мне делать?Как сделать объекты сопоставимыми
я обеспечил, что каждый отдельный элемент, содержащийся в классе:
- не может быть
null
. - Является сопоставимым с элементами того же типа.
- Неизменяется. Ну, по крайней мере, часть, которую я проверяю.
Это не то, что я просто хочу, чтобы сравнить элементы, потому что я могу сделать это с помощью:
private static int hackCMP(Object val, Object val2)
throws SecurityException, NoSuchMethodException,
IllegalArgumentException, IllegalAccessException,
InvocationTargetException {
Method m = val.getClass().getMethod("compareTo", val.getClass());
return (Integer) m.invoke(val, val2);
}
Я хочу передать элементы в качестве входных данных в другой класс непрямого конструктор, который также обеспечивает элементы должны быть сопоставимым. Этот метод:
public static <T extends Comparable<?>> Os of(final Iterator<T> values) {
'Iterable
Почему бы просто не изменить свою подпись на 'Iterable>'? Вы ничего не получаете, явно заявляя, что ваши объекты должны расширять 'Object', поскольку все объекты выполняются. –
@Dave Costa: Тай, это исправило мою проблему. – Margus