java - 如何处理接受字符串或整数的通用 Java 类的比较运算符

标签 java generics compare comparator

我对使用可以处理 StringInteger 数据类型的通用 Java 类很感兴趣。我想使用比较运算符,但它似乎有一个编译错误:

Operator < cannot be used on generic T

如何为 T 使用比较运算符,例如 <、>、= 等? (假设 TNumberString)。

public class Node<T>    {
        public T value;

        public Node(){
        }

        public void testCompare(T anotherValue) {
            if(value == anotherValue)
                System.out.println("equal");
            else if(value < anotherValue)
                System.out.println("less");
            else if(value > anotherValue)
                System.out.println("greater");
        }
    }
}

最佳答案

使用Comparable界面:

public class Node<T extends Comparable<T>> {
    public T value;

    public Node() {
    }

    public void testCompare(T anotherValue) {
        int cmp = value.compareTo(anotherValue);
        if (cmp == 0)
            System.out.println("equal");
        else if (cmp < 0)
            System.out.println("less");
        else if (cmp > 0)
            System.out.println("greater");
    }
}

StringIntegerLongDoubleDate实现和许多其他类。

关于java - 如何处理接受字符串或整数的通用 Java 类的比较运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32086894/

相关文章:

java - IntelliJ IDEA 可以为同一项目的文件打开多个编辑器窗口吗?

具有模式属性的 Java Hibernate Generic DAO

c# - C# 中的嵌套泛型问题

file - 比较两个文件并输出两个文件的差异(包括行号和内容)

objective-c - 在 Objective-C 中比较两个 xml 文件

java - 将带有二进制数据的 byte[] 转换为 String

java - 无法在 JNI 中将 GetMethodID 与字节数组参数一起使用

JavaParser 添加通用类型作为方法返回类型

iphone - 比较 iPhone 中的两个 NSMutableArray 索引

java - 允许我的 Android View 嵌入到其他应用程序中