Если вам действительно нужно исключить «ноль» из результата, и вы не можете предотвратить его попадание в ваш массив, тогда, возможно, вам следует просто перебрать массив с помощью простого цикла и отслеживать «мин» и "макс" в отдельных переменных. Вы все еще можете использовать метод «Compare ()» для каждого объекта, чтобы сравнить его с текущими значениями «min» и «max». Таким образом, вы можете добавить свой собственный код для проверки нулей и их игнорирования.
РЕДАКТИРОВАТЬ: вот код, иллюстрирующий то, о чем я говорю. К сожалению, есть крайний случай, который вы должны рассмотреть - что если все переданные аргументы являются нулевыми? Что возвращает ваш метод?
public static <T extends Comparable<T>> T minOf(T...ts){
T min = null;
for (T t : ts) {
if (t != null && (min == null || t.compareTo(min) < 0)) {
min = t;
}
}
return min;
}
public static <T extends Comparable<T>> T maxOf(T...ts){
T max = null;
for (T t : ts) {
if (t != null && (max == null || t.compareTo(max) > 0)) {
max = t;
}
}
return max;
}