I adjusted my getMaximum() method to generics to avoid the compiler warnings:
static public Comparable<Comparable> getMaximum(Comparable<Comparable> comparable1, Comparable<Comparable> comparable2) {
Comparable<Comparable> result = (comparable1 != null) ? comparable1 : comparable2; //init
if (comparable1 != null && comparable2 != null) {
int c = comparable1.compareTo(comparable2);
result = (c > 0) ? comparable1 : comparable2; //comparable1 > comparable2?
}
return result;
}//getMaximum()
But now, my other classes that call this method e.g. with 2 dates or with 2 numbers don't compile anymore. I tried
static public Comparable<? extends Comparable> getMaximum(Comparable<? extends Comparable> comparable1, Comparable<? extends Comparable> comparable2) {
Comparable<? extends Comparable> result = comparable1; //default
if (comparable1 != null && comparable2 != null) {
int c = comparable1.compareTo(comparable2); //compile error
if (c <= 0) {
result = comparable2;
}
} else if (comparable1 == null) {
result = comparable2;
}
return result;
}//getMaximum()
but this code doesn't compile:
Bound mismatch: The method compareTo(? extends Comparable) of type
Comparable<? extends Comparable> is not applicable for the arguments
(Comparable<? extends Comparable>). The wildcard parameter ? extends
Comparable has no lower bound, and may actually be more restrictive than argument
Comparable<? extends Comparable>