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包装在另一个类中),但我不明白为什么这是必要的.我的问题是: