java - 如何编写泛型 Java 方法并比较方法中泛型类型的两个变量?

标签 java arrays generics

我写了下面的代码:

private static <T> T getMax(T[] array) {
        if(array.length == 0) {
            return null;
        }

        T max = array[0];
        for (int i = 1; i < array.length; i++) {
            if (array[i] > max)
                max = array[i];
        }
        return max;
    }

问题出在这一行:if(array[i] > max)

我知道 Java 在未知/任意类的情况下无法理解 > 运算符。

与此同时,我不想为我知道要发送的类的对象编写不同的方法。

有解决方法吗?

最佳答案

您需要更改 TT extends Comparable<T>并使用 compareTo方法。即:

  • private static <T extends Comparable<T>> T getMax(T[] array) , 和
  • if (array[i].compareTo(max) > 0) { ... }

但请注意,您可以使用

maxElement = Collections.max(Arrays.asList(array));

关于java - 如何编写泛型 Java 方法并比较方法中泛型类型的两个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29310847/

相关文章:

java - 使用 Spring Boot 构建基本 Web 应用程序的不同方法?

java - 当请求 Content-Type 为 gzip 时,Jetty 响应 400 Bad Request

javascript - 如何获取数组 B (由对象组成)中但不在数组 A 中的项目列表?

C - 8051 数组输出

java - 是否有更简单的方法来检索子类实现中的硬编码类型参数?

generics - 为什么 F# 泛型结构有额外的 __dummy 字段?

Java:查找多边形A不与多边形B相交的区域

c# - 通过 ref 将 C# 数组传递给 C++ DLLImport 方法修剪值

java - 类型 T 的方法未定义

java - 如何根据用户在一个 Activity 中单击的按钮(三个中的一个)来更改单个 WebView (Android) 的内容?