Java Arrays&Generics:Java等价于C#IEnumerable <T>

Win*_*ith 45 java arrays generics

所以在C#中,我可以将a string[]视为一个IEnumerable<string>.

是否有Java等价物?

Tom*_*ine 47

Iterable<String>相当于IEnumerable<string>.

如果实现了数组,那么在类型系统中这将是一个奇怪的现象Iterable.String[]是一个实例Object[],但Iterable<String>不是Iterable<Object>.类和接口不能多次使用不同的泛型参数实现相同的通用接口.

String[]Iterable在增强的for循环中工作.

String[]很容易变成Iterable:

Iterable<String> strs = java.util.Arrays.asList(strArray);
Run Code Online (Sandbox Code Playgroud)

首选集合而不是数组(无论如何都是非基元).引用类型的数组有点奇怪,自Java 1.5以来很少需要.

  • 有关_why_的更多信息,您无法在Iterable <String>和Iterable <Object>之间进行转换,请查看[协方差和逆变](http://en.wikipedia.org/wiki/Covariance_and_contravariance_%28computer_science%29). (2认同)

bru*_*nde 8

你在找Iterable<String>

Iterable<T> <=> IEnumerable<T>
Iterator<T> <=> IEnumerator<T>
Run Code Online (Sandbox Code Playgroud)


Lea*_*ing 5

Iterable <T>