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包装在另一个类中),但我不明白为什么这是必要的。我的问题是:
答案 0 :(得分:2)
JodaTime旨在用于Java 1.4,因此不使用任何Java 5功能,包括泛型。
所以是的,你需要在某些情况下添加那个样板警告抑制内容。