Java错误: Bad Operand Type for binary operator <

标签 java arrays generics operator-keyword operand

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;
    }
    // ...

关于Java错误: Bad Operand Type for binary operator <,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49961195/

相关文章:

来自模板化对象的 Java 8 功能构造函数

java - 身份验证错误 : Unable to respond to any of these challenges: {} Android - 401 Unauthorized

Java:具有两个变量的二维数组

c# - 在这种情况下如何正确使用泛型和类型约束?

java - 从 json 字符串 jackson 库 java 中删除斜杠

java - 使用 libjvm.so 时出现 Sigsegv Java fatal error

Python 数组奇怪的行为?

python - 如何使用 2D 蒙版过滤 3D 阵列

generics - 类型推断失败,但无法检查已删除类型的实例

java - 为什么在 T 是类型参数而 t 是变量的情况下不允许使用 "t instanceof T"?