2012-01-24 43 views
3

是否有可能將此C#代碼重寫爲java?C#到Java重寫 - 通用類

public interface IEnumerable<out T> : IEnumerable 
{ 

    IEnumerator<T> GetEnumerator(); 
} 

我有創建泛型類與名稱中的參數T的問題。我也不知道,如何解決出參數,哪些Java不支持。任何在這兩個平臺都有經驗的人?

+0

IEnumerable的等價性是可以過濾的。你不需要寫這個。 – Stilgar

回答

8

out這裏並不是通常意義上的out參數 - 它表達的事實,IEnumerable<T>T協變。這允許你說,例如:

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

Java基本上處理通用方差非常不同。實際上,Java中的泛型通常是非常不同的 - 請查看Java Generics FAQ獲取lot的更多詳細信息。

在Java中的IEnumerable<T>近等值是Iterable<T> - 你會好得多使用不是跨複製IEnumerable<T>。 (例如,Iterable<T>在Java中以「增強for循環」的形式提供了語言支持。)

+0

感謝Jon的回覆! – Waypoint

0

我不是一個C#編碼器,但下面的代碼可能工作:

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

IEnumerable IS Iterable。理論上你應該返回迭代器,但整個事情是毫無意義的,因爲Iterable已經是Java的一部分 – Stilgar