See the tiny method below. The boo1 = ...
line goes fine, probably as it does object ID comparison. The second boo2 = ...
line gives a compile error "Operator >
cannot be applied to T,T". I don't understand why. After all T extends Number
(as you can see in the method signature), so comparisons like >
should be possible. What am I doing wrong?
public static <T extends Number> int[] where(T[] arr, T val) {
if (arr == null || arr.length == 0) return null;
boolean boo1 = arr[0] == val; //Compiles happily, as does "!="
boolean boo2 = arr[0] > val; //Doesn't compile (nor does ">=", "<", "<="
return null;
}