2012-01-24 4 views
3

このC#コードをJavaに書き直すことは可能ですか?C#からJava書き換え - ジェネリッククラス

public interface IEnumerable<out T> : IEnumerable 
{ 

    IEnumerator<T> GetEnumerator(); 
} 

名前にパラメータTを持つジェネリッククラスを作成する際に問題があります。私はまた、Javaがサポートしていないパラメータを解決する方法を知りません。どちらのプラットフォームでも経験豊富な人?

+0

等価のIEnumerableはIterableです。あなたはこれを書く必要はありません。 – Stilgar

答えて

8

ここoutは、通常の意味でのoutパラメータのためではない - それはIEnumerable<T>Tで共変であるという事実を表現ます。たとえば、次のように言うことができます。

IEnumerable<string> strings = new List<string>(); 
IEnumerable<object> objects = strings; 

Javaは一般的なばらつきとは大きく異なります。実際、Javaのジェネリックスは一般的に非常に異なっています。Java Generics FAQロットのに詳しく見てください。

JavaのIEnumerable<T>に近い数値はIterable<T>です。IEnumerable<T>をコピーするよりもはるかに良いでしょう。 (例えば、Iterable<T>はJavaの言語サポートを "for for enhanced loop"の形でサポートしています)。

+0

ありがとうございました! – Waypoint

0

イムないC#のコーダが、コードがうまくいくかもしれない次

public interface IEnumerable<T> { 
    Iterable<T> getEnumerator(); 
} 
+0

IEnumerableはIterableです。理論的にはIteratorはを返すべきですが、IterableはすでにJavaの一部であるため、全体が無意味です – Stilgar