How to resolve `Raw use of parameterized class 'Comparable'` warning?

Parsa Noori picture Parsa Noori · May 31, 2020 · Viewed 8.2k times · Source

Got to implement the method below for an assignment which it's subject is "WildCards", but don't know where to use wildcards in order to resolve the warning.

static <T extends Comparable> T findMax(T ... items)
{
    T max = items[0];
    for (T item : items)
        if (item.compareTo(max) > 0)
            max = item;
    return max;
}

Any ideas ?

Answer

Dici picture Dici · Jun 1, 2020

Comparable is a generic interface, so to use it safely you must always specific the generic type to use. In your case, something like:

<T extends Comparable<T>>

is likely what you're looking for. Otherwise, the compiler is enable to help you verify that the types are actually compatible in all scenarii.