Как передать массив параметру типа, ограниченному интерфейсом Comparable - PullRequest
0 голосов
/ 15 октября 2019

У меня есть интерфейс:

public interface Comparable<T> {
    public int compareTo(T o);
}

, который ограничивает параметр типа в методе

public static <T extends Comparable<T>> int properCountGreaterThan(T [] tArray, T elem) {
    int count = 0;
    for (T e : tArray) {
        if (e.compareTo(elem) > 0) { count ++; }
    }
    return count;
}

Как я могу передать метод ProperCountGreaterThan (T [] tArray, T elem)массив целых чисел и целое число, которое я хочу, чтобы элементы массива тоже сравнивались? Недавно я узнал об интерфейсе сравнения в в этом уроке , но он не объясняет, как использовать его для фактического подсчета количества элементов в массиве, превышающего указанный элемент, и под этим я подразумеваюне объясняет, как вызвать метод и передать ему массив и указанный элемент. Я также не понимаю, как метод ProperCountGreaterThan будет сравнивать указанный элемент с элементами массива, поскольку метод CompareTo (T o) не имеет реализации, и когда он вызывается в ProperCountGreaterThan, он сравнивается только с 0:

* 1010. *

1 Ответ

1 голос
/ 15 октября 2019

вы можете передать объект этому методу следующим образом.

public static void main (String[] args)  {

    int num = countGreaterThan(new Integer[] {25,14,48,86}, 20);
}


public static <T extends Comparable<T>> int countGreaterThan(T[] anArray, T elem) {
    int count = 0;
    for (T e : anArray)
        if (e.compareTo(elem) > 0)
            ++count;
    return count;
}

метод говорит, что он может принимать все, что реализует Comparable интерфейс. Integer класс реализует Comparable. чтобы понять лучше, вы должны прочитать больше о Generics Анжелика Лангер объясняет это лучше всего, в списке для меня.

...