для расширения моих подразделений private Libary Я попытался реализовать метод isBetween. Этот метод является общим и ожидает Comparable
типа T
за его минимальное значение, его максимальное значение и значения varargs. Его цель - проверить, находятся ли все значения в указанном диапазоне.укажите общий тип аргументов метода
public static void main(String[] args) {
System.out.print(isBetween(1, 100, 200, 100, 1, 2));
}
@SafeVarargs
public static <T extends Comparable> boolean isBetween(T minimum, T maximum, T... values) {
for (T value : values) {
if (!(value.compareTo(minimum) >= 0 && value.compareTo(maximum) <= 0))
return false;
}
return true;
}
Это работает просто отлично. Но тип T может содержать любые сопоставимые объекты. Вызов метода:
System.out.print(isBetween(1, 100, 200, 100, "How awkward", 2));
также принимается во время компиляции. Это не типичное и не может быть принято.
Два решения пришли мне на ум:
1. Вызовите метод как следующий
System.out.print(Class.<Integer>isBetween(1, 100, 200, 100, 1, 2));
2. сделать один из моих параметров метода типа U
и удлинить тип T
к типу U
Оба «решения» не очень элегантны. Для первого требуется написать дополнительный код, прежде чем вы вызовете метод, а второй - как взломать.
Есть ли еще более элегантные способы решения моей проблемы?
'>'? –
fge
отлично это не приходило в голову, спасибо :) –