java - 比较通用 T 对象

标签 java generics

我正在制作一个使用 T 作为主要参数的泛型类。我需要对一些 T 进行排序,但要做到这一点,我需要实现一个通用的compareTo。我一直在寻找如何做到这一点。我知道如何实现类似的东西

  public class Foo implements Comparable {
       private int age;
       public Foo (int age) { 
             this.age = age;
       }
       public int compareTo(Foo a) {
             if (age < a.age) { 
                 return -1; 
             }
             if (age == a.age) {
                 return 0;
             }
             if (age > a.age) {
                 return 1;
             } else {
                 return 0; 
             }
       }
  }

但是当我尝试比较两个通用对象时我迷失了(例如,如果 T 是整数,它比较整数,如果 T 是字符串,它比较字符串)。基本上是这样的:

  T.compareTo(T) 

我知道这可能是一个我忽略的简单解决方案,但我不明白,因为没有可以比较的变量。

最佳答案

使用具有泛型类型参数的 Comparable 泛型形式,而不是没有任何类型参数的 Comparable 原始形式。将 Foo 对象与其他 Foo 对象进行比较是有意义的。我不会使用泛型类型参数;我只需提供 Foo 作为 Comparable 上的类型参数。

尝试

public class Foo implements Comparable<Foo> {

那么您的 compareTo 方法应该可以工作。

关于java - 比较通用 T 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22186654/

相关文章:

java - 在 java 中在服务器端处理输入 HTML 内容的最佳实践

java - 动态加载 Java 类文件

java - 在异常中存储对对象的引用?

java - Android Studio 构建失败

java - 需要建议解决递归算法以确定字符串是否是其他两个字符串的混洗

generics - 如何在结构本身不需要通用参数的通用impl block 中添加类型注释?

c# - 更改 .NET 通用字典中的顺序

java - 如何在运行时获取通配符上限的类型?

C# 到 Java : where T : new() Syntax

java - 自绑定(bind)泛型中的子类化