java - Java 泛型的乐趣

标签 java generics comparable

有人知道如何使用泛型编写下面的代码片段并避免编译器警告吗? (@SuppressWarnings("unchecked") 被认为作弊)。

也许,通过泛型检查“左”的类型是否与“右”的类型相同?

public void assertLessOrEqual(Comparable left, Comparable right) {
    if (left == null || right == null || (left.compareTo(right) > 0)) {
        String msg = "["+left+"] is not less than ["+right+"]";
        throw new RuntimeException("assertLessOrEqual: " + msg);
    }
}

最佳答案

这也适用于 Comparable 类型的子类:

public <T extends Comparable<? super T>> void assertLessOrEqual(T left, T right) {
  if (left == null || right == null || left.compareTo(right) > 0) {
    String msg = "["+left+"] is not less than ["+right+"]";
    throw new RuntimeException("assertLessOrEqual: " + msg);
  }
}

关于java - Java 泛型的乐趣,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1438028/

相关文章:

java - 在不运行程序的情况下如何检测舍入误差?

java - 顺序 ArrayList 可序列化

java.lang.String 无法转换为 Comparable

c# - 在 Entity Framework 中跨多个表进行选择,从而产生通用的 IQueryable?

java - 通用 toMap 收集器无法编译

generics - TypeScript 中静态方法的抽象方法版本

java - 如何比较两个字符串?

Java lwjgl&slick2d 游戏 GUI 和 HUD?

java - 用退格键替换换行符到上一行

java - Google Chart JSON 问题 - Java