2017-01-16 4 views
0

のは、私はシンプルなインタフェースStatusJavaでレイジージェネリック型パス

interface Status { 
    Integer getNumber(); 
} 

を持っており、それを取得するためのシンプルなインターフェイスがあるとしましょう:私はの簡易版を作ることができますに興味を持って何

interface A<T extends Status> { 
    T getStatus(); 
} 

を:

interface DateStatus extends Status { 
    Date getDate(); 
} 

interface B<T extends DateStatus> extends A<T> { 

} 

Bメソッドの拡張AgetStatus()DateStatusのインスタンスを返しますか?

簡単な例:

A.getStatus() -> Status 

B.getStatus() -> Status 

B<DateStatus>.getStatus() -> DateStatus 

どのように私はB.getStatus()達成することができます - ワイルドカードを追加することなく、>DateStatusを?あなたがする必要がどのような

答えて

0

のgetStatusを上書きBの定義にある:

public interface B<T extends DateStatus> extends A<T> { 
    @Override 
    T getStatus(); 
} 
+0

を、私はこの方法について考えたが、それは私が特に好きではない1つの問題、見 アウトサイダーを持っていますBインタフェースは、2つの方法が表示されます。 'ステータスのgetStatus()' 'DateStatusのgetStatus()インタフェースB – Osvaldas

+0

内部' まあそれなしで(原因Javaの型消去に)キャッチ-22がそこにあります。 –