Java Error: Bad Operand Type for binary operator <
Java Error: Bad Operand Type for binary operator <
public class MaxMinArray<T>{
private T getMin(T[] arr){
T min = arr[0];
for (int i = 0; i<arr.length; i++){
min = (arr[i] < min) ? arr[i] : min;
}
return min;
}
public static void main(String[] args) {
MaxMinArray<Integer> m = new MaxMinArray<Integer>();
Integer[] arr = {1,2,3,4,5};
System.out.println(m.getMin(arr));
}
}
我收到以下错误。我不明白为什么我不能使用 <, 如果 T 是类型变量而不是对象?
error: bad operand types for binary operator '<'
if (arr[i] < min){
^
first type: T
second type: T
where T is a type-variable:
T extends Object declared in class MaxMinArray
此外,由于我将 T 用于泛型,将我的数组定义为 Integer 而不是 int 是个好主意吗?如果不是,我应该如何定义一个整数数组?
谢谢!
arr[i]
包含一些 Object
的一些通用类型 T
。您不能在 Object
.
上使用 <
运算符
改为这样做:
public class MaxMinArray<T extends Comparable<T>> {
private T getMin(T[] arr){
T min = arr[0];
for (int i = 0; i<arr.length; i++){
min = (arr[i].compareTo(min) < 0) ? arr[i] : min;
}
return min;
}
// ...
public class MaxMinArray<T>{
private T getMin(T[] arr){
T min = arr[0];
for (int i = 0; i<arr.length; i++){
min = (arr[i] < min) ? arr[i] : min;
}
return min;
}
public static void main(String[] args) {
MaxMinArray<Integer> m = new MaxMinArray<Integer>();
Integer[] arr = {1,2,3,4,5};
System.out.println(m.getMin(arr));
}
}
我收到以下错误。我不明白为什么我不能使用 <, 如果 T 是类型变量而不是对象?
error: bad operand types for binary operator '<'
if (arr[i] < min){
^
first type: T
second type: T
where T is a type-variable:
T extends Object declared in class MaxMinArray
此外,由于我将 T 用于泛型,将我的数组定义为 Integer 而不是 int 是个好主意吗?如果不是,我应该如何定义一个整数数组?
谢谢!
arr[i]
包含一些 Object
的一些通用类型 T
。您不能在 Object
.
<
运算符
改为这样做:
public class MaxMinArray<T extends Comparable<T>> {
private T getMin(T[] arr){
T min = arr[0];
for (int i = 0; i<arr.length; i++){
min = (arr[i].compareTo(min) < 0) ? arr[i] : min;
}
return min;
}
// ...