У меня есть контейнер, который может сохранять значения разных типов, реализующих интерфейс Comparable
. Мне нужно сравнить эти значения следующим образом:Как сравнить два значения в Java
UpperLowerContainer values;
//initializing the container
Comparable<?> upper = (Comparable<?>) values.getUpper();
Comparable<?> lower = (Comparable<?>) values.getLower();
if (upper.compareTo(lower) < 0){ //This is not compiled
//do some
}
Код не скомпилирован по понятной причине. Захват подстановочного знака lower
не может быть применен к захвату 's wildacrd и наоборот.
Но как я могу решить эту проблему? Есть идеи?
UPD: Тип значений, хранящихся в контейнере, одинаковый. Перед хранением в нем есть подтверждение.
Сопоставимые верхние = (Сопоставимые ) значения. getUpper(); \t \t Сопоставимый lower = (Сопоставимый ) values.getLower(); try casting как будто (upper.compareTo ((CLASSNAME) ниже) –
имя класса может быть дата, а также целое число – user3663882
Я не уверен, что то, что вы просите, возможно. Вы просите сравнить потенциально несравнимые объекты Вместе с тем, если еще один код завершит проблему, так как, пока я думаю, что другие ответы касаются компиляции, они не оспаривают проблему с корнем. – Makoto