У меня есть вопрос относительно Java расширенного «для» заявления:Enhanced «для» над классом
http://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.14.2
Есть ли возможность использовать расширение «для» заявления по классу? (А не только объект)
Вот пример:
import java.util.*;
class MyRecord
{
public String name;
public MyRecord(String name) {
this.name = name;
}
}
class MyCollection implements Iterable<MyRecord>
{
private static Vector<MyRecord> vec = new Vector<MyRecord>();
public Iterator<MyRecord> iterator() {
return vec.iterator();
}
public static void add(MyRecord rec) {
vec.add(rec);
}
}
class Test
{
public static void main(String[] args)
{
MyCollection.add(new MyRecord("first"));
MyCollection.add(new MyRecord("second"));
for(MyRecord rec : MyCollection)
System.out.println(rec.name);
}
}
Я получаю ошибку в строке с «для»:
Test.java: error: cannot find symbol
for(MyRecord rec : MyCollection)
^
symbol: variable MyCollection
Если это возможно, я хотел бы избежать создания экземпляр класса MyCollection.
Вы можете использовать одноплодный шаблон здесь. –
Есть ли причина, по которой вы не захотите создать экземпляр своего класса? –
'Вектор' - взрыв из прошлого –