为什么Joda瞬间扩展原始类型Comparable?

Ali*_*ell 6 java jodatime

Joda的AbstractInstant接口扩展了原始类型Comparable,而不是Comparable<AbstractInstant>,它似乎违反了Java最佳实践.特别是,这意味着我不能使用DateTime来参数化这样的类:

class Foo<T extends Comparable<? super T>> {
    public int ct(T a, T b) {
        return a.compareTo(b);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的理解是这种类完全有效(它肯定适用于Double等).但是,为了让它与DateTime一起工作,我使用原始类型和抑制警告丢弃了我自己的代码:

@SuppressWarnings("unchecked")
class Foo<T extends Comparable> {
    public int ct(T a, T b) {
        return a.compareTo(b);
    }
}
Run Code Online (Sandbox Code Playgroud)

有一个相关的问题暗示了一种解决方法(为了比较的目的将DateTime包装在另一个类中),但我不明白为什么这是必要的.我的问题是:

  1. 有谁知道为什么Joda正在扩展原始类型,或者
  2. 这是我应该向图书馆维护者报告的错误吗?

ska*_*man 2

JodaTime 设计为在 Java 1.4 上工作,因此不使用任何 Java 5 功能,包括泛型。

所以是的,在某些情况下您需要添加样板警告抑制内容。