Почему Перечисления не Повторяемы?

На стороне клиента вы можете включить запросы cors в AngularJS через

app.config(['$httpProvider', function($httpProvider) {
        $httpProvider.defaults.useXDomain = true;
        delete $httpProvider.defaults.headers.common['X-Requested-With'];
    }
]);

Однако, если это все еще возвращает ошибку, это будет означать, что сервер, который вы делаете запрос, должен разрешить запрос CORS и должен быть настроен для этого.

65
задан Adam Parkin 1 July 2015 в 22:03
поделиться

4 ответа

Перечисление не было изменено для поддержки Повторяемый, потому что это - интерфейс не реальный класс (как Вектор, который был modifed для поддержки интерфейса Collections).

, Если бы Перечисление было изменено на поддержку, Повторяемую, это повредило бы код группы людей.

39
ответ дан Blorgbeard 24 November 2019 в 15:15
поделиться

Как легкое и чистый способ использовать Перечисление с расширенным для цикла, преобразуйте в ArrayList с java.util. Collections.list.

for (TableColumn col : Collections.list(columnModel.getColumns()) {

(javax.swing.table. TableColumnModel.getColumns возвращает Перечисление.)

Примечание, это может быть очень немного менее эффективно.

80
ответ дан Tom Hawtin - tackline 24 November 2019 в 15:15
поделиться

Не имеет смысла для Enumeration реализовывать Iterable. Iterable метод фабрики для Iterator. Enumeration походит Iterator, и только поддерживает состояние для единственного перечисления.

Так, быть тщательной попыткой перенестись Enumeration как Iterable. Если кто-то передаст меня Iterable, я предположу, что могу звонить iterator() на нем неоднократно, создавая столько Iterator экземпляры, сколько я хочу, и выполняющий итерации независимо на каждом. Обернутый Enumeration не выполнит этот контракт; не позволяйте своему обернутому Enumeration, сбегают из Вашего собственного кода. (Как в стороне, я заметил, что Java 7 DirectoryStream нарушает ожидания просто этим способом и не должен быть позволен "выйти" также.)

Enumeration похож Iterator, не Iterable. Collection Iterable. Iterator не.

Вы не можете сделать этого:

Vector<X> list = …
Iterator<X> i = list.iterator();
for (X x : i) {
    x.doStuff();
}

, Таким образом, не имело бы смысла делать это:

Vector<X> list = …
Enumeration<X> i = list.enumeration();
for (X x : i) {
    x.doStuff();
}

нет никакого Enumerable эквивалентен [1 123]. Это могло быть добавлено, не повреждая ничего для работы в на циклы, но какова будет точка? Если Вы в состоянии реализовать это новое Enumerable интерфейс, почему не просто реализуют Iterable вместо этого?

45
ответ дан erickson 24 November 2019 в 15:15
поделиться

Перечисление AFAIK своего рода "устаревшее" :

Итератор занимает место Перечисления в платформе наборов Java

, я надеюсь, что они изменят API Сервлета с JSR 315 для использования Итератора вместо Перечисления.

7
ответ дан dlinsin 24 November 2019 в 15:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: