C#到Java重写 - 泛型类

Way*_*int 3 c# java rewrite

是否可以将此C#代码重写为java?

public interface IEnumerable<out T> : IEnumerable
{

    IEnumerator<T> GetEnumerator();
}
Run Code Online (Sandbox Code Playgroud)

我在创建名称中带参数T的泛型类时遇到问题.我也不知道,如何解决参数,哪些Java不支持.谁都有两个平台的经验?

Jon*_*eet 8

out这里并不是一个out通常意义上的参数-它表达的事实IEnumerable<T>是协变T.这可以让你说,例如:

IEnumerable<string> strings = new List<string>();
IEnumerable<object> objects = strings;
Run Code Online (Sandbox Code Playgroud)

基本上,Java处理泛型方差的方式非常不同.事实上,在Java泛型是一般非常不同-看看Java泛型常见问题解答很多更详细.

IEnumerable<T>Java中几乎相当于Iterable<T>- 使用它比使用复制要好得多IEnumerable<T>.(例如,Iterable<T>Java中的语言支持采用"增强型for循环"的形式.)