2016-08-18 10 views
-2

オーバーライドされたメソッドはIterable<T>を返したいが、メソッド内にはIterable<String>がある。 Iterable<T>Iterable<String>から、またはSet<String>から返すにはどうすればよいですか?Iterable <String> to Iterable <T>

コード:

@Override 
public Iterable<T> getAll() { 
    Set<String> set = getCache().keySet(); 
    Iterable<String> iter = set; 
    return ? 
} 
+6

ジェネリックは、常に文字列の場合はなぜですか? –

+0

何を返すのですか?それは 'keySet'ですか?もしそうなら、あなたのメソッドの戻り値の型は 'Iterable 'でなければなりませんが、私はあなたが 'Iterable 'になる何かを返すと思われます。 – Aaron

+0

はい、Iterable を返すと予想されますが、Set があります。変換は可能ですか? – user840930

答えて

5

シンプルな答えは - あなたがすることはできません。変換はできません。

宣言はIterable<T> getAll()方法はTを囲むジェネリック型がインスタンス化されるときに使用されるパラメータの種類を示すTのインスタンスを提供しIterableを返すことが期待されていることを言います。

あなたのコードだけIterable<String>を返すことができる場合TStringあるとき、それは唯一の呼び出しサイトの種類の要件を満たしています。それが受け入れ可能ならば、generic型パラメータTを取り除くこともできます。

関連する問題