2017-05-04 20 views
2

私は、java.time API、特にLocalDateに問題があります。拡張インターフェイスのメソッドが拡張インターフェイスを実装するクラスで表示されないのはなぜですか?

LocalDateはChronoLocalDateを実装しており、これはComparableを実装しています。

私は

LocalDate now = LocalDate.now(); 
now.getClass().getInterfaces(); 

ような何かを行うときにのみLOCALDATEで直接私にインターフェースを示していますが、ChronoLocalDateに継承されていないもの。これはなぜですか?

アドオン:私の元の問題は、同等クラスを実装する型で動作するジェネリッククラスを持っていることですが、LocalDateではComparableを直接実装していないため明らかに動作しません。ここで

は、ジェネリッククラスの定義です:

public final class Range<T extends Comparable<T> & Serializable> implements Serializable 

私はLOCALDATEタイプについて、この一般的なクラス定義を機能させるために行うには何が必要でしょうか?

答えて

4

より、このようなあなたの定義を見てShould't:

static final class Range<T extends Comparable<? super T> & 
      Serializable> implements Serializable { 
+0

グレート入力は、私は定義が異なって見えるために必要なことを知っていたが、この参照を追加する方法を私に明確ではありませんでした、ありがとうございました実装されたインタフェースそれにもかかわらず、私の最初の質問(私にとって哲学的なものです)に対する答えを知っていますか?継承されたインターフェースメソッドがそれによって検索されないのはなぜですか? – hecko84

+1

@ hecko84 javadocはこう言っているのですか? 'このオブジェクトが表すクラスまたはインタフェースによって直接実装されたインタフェースを返す '。それらをすべて得る方法があります。 'guava'は' TypeToken'でこれを提供します。 – Eugene

+0

私は、時には読むことを参照してください、私はちょうどそれを見ていない参照してください。とにかくグアバとジェネリック定義についてのヒントをありがとう。 – hecko84

関連する問題