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

时间:2010-12-13 12:08:29

标签: java jodatime

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

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

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

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

有一个related question建议一个解决方法(为了比较的目的将DateTime包装在另一个类中),但我不明白为什么这是必要的。我的问题是:

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

1 个答案:

答案 0 :(得分:2)

JodaTime旨在用于Java 1.4,因此不使用任何Java 5功能,包括泛型。

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