是否有可能將此C#代碼重寫爲java?C#到Java重寫 - 通用類
public interface IEnumerable<out T> : IEnumerable
{
IEnumerator<T> GetEnumerator();
}
我有創建泛型類與名稱中的參數T的問題。我也不知道,如何解決出參數,哪些Java不支持。任何在這兩個平臺都有經驗的人?
是否有可能將此C#代碼重寫爲java?C#到Java重寫 - 通用類
public interface IEnumerable<out T> : IEnumerable
{
IEnumerator<T> GetEnumerator();
}
我有創建泛型類與名稱中的參數T的問題。我也不知道,如何解決出參數,哪些Java不支持。任何在這兩個平臺都有經驗的人?
的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循環」的形式提供了語言支持。)
感謝Jon的回覆! – Waypoint
我不是一個C#編碼器,但下面的代碼可能工作:
public interface IEnumerable<T> {
Iterable<T> getEnumerator();
}
IEnumerable IS Iterable。理論上你應該返回迭代器
IEnumerable的等價性是可以過濾的。你不需要寫這個。 – Stilgar