泛型类,它比较两个具有相同类型的对象,并获得两者中最小的对象



我尝试编写一个泛型类,将两个对象与相同类型进行比较。这门课会让我得到两者中最小的一个。我的代码不起作用。

public class compare < T > {
    private T type1;
    private T type2;
    public compare(T type1, T type2) {
        this.type1 = type1;
        this.type2 = type2;
    }
    public T getSmallest() {
        if (type1 > type2) {
            return type2;
        } else if (type1 == type2) {
            return 0;
        } else {
            return type1;
        }
    }
}

代码的主要问题是比较运算符 <> 仅针对基元算术类型(字符、字节、短整型、整型、长整型、浮点数和双精度数(定义。 不能将这些运算符应用于任意引用(非基元(类型,并且泛型类型参数必须是引用类型。

您似乎正在尝试重新发明ComparatorComparable接口。仅当引用类型实现Comparable<T>接口并提供compareTo()方法或使用实现Comparator<T>的帮助程序类时,才能"比较"引用类型以进行排序(即更大/更小(。 在第一种情况下(implements Comparable<T>(,类本身根据其内部状态以任何适当的术语定义比较;在第二种情况下,比较是在帮助程序implements Comparator<T>类中指定的,基于帮助程序可见的任何内部状态。

有关更多详细信息,请查看 Oracle Java 教程的对象排序部分。

要扩展上述注释,您应该为您希望能够与 T 类型的其他对象进行比较/排序的任何类 T 实现 Compare。该接口只有一个必须实现的方法,即 compareTo 函数,它应返回负值、正值或零值。然后,当 T 实现 Comparable 时,可以在 T 的泛型类中使用此函数。

https://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html

你应该实现 Comparable 但 getSmallest 也应该成为 compareTo(T o( 方法。

查看javadoc的接口:https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html

相关内容

  • 没有找到相关文章

最新更新