2010-12-13 1 views
6

JodaのAbstractInstantインターフェイスはJava best practicesに違反していると思われるComparable<AbstractInstant>ではなく、生のタイプComparableを拡張します。特に、それは私がこのようなクラスをパラメータ化するのDateTimeを使用できないことを意味しますJodaが生の型Comparableを拡張するのはなぜですか?

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

それはクラスのこの種の私の理解だった(それは確かになどダブル、で動作します)完全に有効でした。それは日時で動作するように取得するには、しかし、私は生タイプのごみ自分のコードがあると警告抑制:

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

をする目的のために別のクラスでのDateTimeを包む回避策を(示唆related questionがあります比較)、しかし、私はそれがなぜ必要なのか分からない。私の質問は次のようになります。

  1. ジョダは生タイプを拡張している、または
  2. は、私は、ライブラリのメンテナに報告すべきバグこれは、なぜ誰もが知っていますか?
+1

Jona 2.0はジェネリックをサポートしているので、この問題に対処しています。 – Snekse

答えて

2

JodaTimeはJava 1.4で動作するように設計されているため、ジェネリックを含むJava 5の機能は使用していません。

はい、定型的な警告抑制機能を追加する必要があります。

+1

「定型警告の抑制」ではありません。 Javaのベストプラクティスに違反して、汎用のComparableベースのクラスのインタフェースを変更する必要があります。そのクラスのソースコードにアクセスできない場合は、できませんでした。 –

+0

@chrispy:OK、十分です。ポイントは、あなたはそれに立ち往生しているということです。 – skaffman

+0

heh、それは本当です。 –

関連する問題