2017-04-09 16 views
-1

こんにちは、コードの行の不確かさ それは以下の階層のように見えます。コードでIはdoStuff()この何が意味ですか:MyInterfaceA <MyinterfaceB> myvariable in java?

MyIntA<MyIntB> var = doStuff(); 

参照他に

public interface MyIntA<T extends MyIntB> { 
    //stuff 
} 

2つ目

public interface MyIntB<T extends MyIntC>{ 
//stuff 
} 

した後、戻り値の型は

<T extends MyIntB> MyIntA <T> 

MyIntA<MyIntB> varはどのようなものですか?
どのタイプがvarですか?タイプInterface<Interface>

+0

インタフェースを確認することができます詳細についてはMyIntA<MyIntB>

である、それが宣言されているようvarの種類が同じ..ですタイプではない「タイプ」ではありません –

+1

'' 'MyIntA ' ''は許可されます。 '' 'public interface MyIntA ' ''です。 '' T''は少なくとも '' MyIntB'''(一般的な共分散)です。ここで問題と思われるもの – Sheinbergon

+1

ジェネリック薬に慣れるのには時間がかかるので、あなたの混乱を理解しています。私はあなたの具体的な質問を理解していません。 'var'は' MyIntA 'と宣言されています。これは' var'のコンパイル時の型です( 'MyIntA'がインタフェースにあるので、より特定の実行時型を取得します)。 –

答えて

2

は、私はあなたが私たちのすべてがjava.util.Listを使用

をunderstand-するのを助けることができる既存の例を挙げましょう。 Listはインターフェースであり、以下E今ここList

public interface List <E> { 
    void add(E x); 
    Iterator<E> iterator(); 
    ........... 
} 

の署名であるListで使用される変数の型です。ですから、同じことが起こっているあなたの例では

List<Integer> list; 

を次のように呼び出しているIntegerあなたがタイプとList変数を宣言しているとき。 MyIntA変数を定義する場合は、この変数をMyIntBまで拡張するタイプに使用します。

どのタイプがvarですか?インターフェイスタイプ?

Interfaceあなたはdoc

関連する問題