Интерфейс AbstractInstant от Joda расширяет необработанный тип Comparable
вместо Comparable<AbstractInstant>
, что, кажется, нарушает лучшие практики Java .В частности, это означает, что я не могу использовать 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);
}
}
Существует связанный вопрос , который предлагает обходной путь (переносDateTime в другом классе для целей сравнения), но я не понимаю, почему это должно быть необходимо.Мой вопрос:
- Кто-нибудь знает, почему Joda расширяет необработанный тип, или
- Это ошибка, о которой я должен сообщить сопровождающим библиотеки?