Я хотел бы использовать следующий класс следующим образом:Как я могу получить итератор массива?
for(String device : new Devices())
{
//
}
Если я обеспечить прямой доступ к внутреннему массиву строк, то нет никаких проблем:
for(String device : new Devices().getAllDevices()) //getAllDevices would be a String[]
{
//
}
Но я просто хочу переместите итератор, который был бы простым, если AllDevices
были ArrayList
.
public final class Devices implements Iterable<String>{
private static final String MyKindleFire = "123156448975312";
private static final String[] AllDevices = new String[]{MyKindleFire};
@Override
public Iterator<String> iterator() {
// if AllDevices were an array list, this would be possible
// but how should I do this for an array?
return AllDevices.iterator();
}
}
Это работает, но я хотел бы знать, лучший способ, если это возможно:
@Override
public Iterator<String> iterator() {
return Arrays.asList(AllDevices).iterator();
}
Это отличная мысль о примитивах, я об этом не думал. – weston
Более прямое «указание» [:-)] - это JLS 14.14.2 - http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.14.2 - который точно определяет, что улучшенное для цикла средство для массивов. –