Не удается перебрать массив - PullRequest
1 голос
/ 02 января 2011
UserType statuses = twitter.getFriendsStatuses(UserType.class, null, null);
for( UserType  users :  statuses )
{
     out.println("<p>"+users.getName()+"</p>");
}

Я получаю сообщение об ошибке «Foreach не применим к типу выражения».


Вот определение моих методов:

public <T> T getFriendsStatuses(Class<T> responseType, String lite, String page) throws UniformInterfaceException {
        String[] queryParamNames = new String[]{"lite", "page"};
        String[] queryParamValues = new String[]{lite, page};
        return webResource.queryParams(getQueryOrFormParams(queryParamNames, queryParamValues)).accept(javax.ws.rs.core.MediaType.TEXT_XML).get(responseType);
    }

Ответы [ 2 ]

4 голосов
/ 02 января 2011

Это потому, что UserType не реализует Iterable<T>. Таким образом, вы не можете использовать расширенный цикл for ( foreach ) для итерации по нему.


РЕДАКТИРОВАТЬ : Учитывая приведенный вами пример, мое дикое предположение состоит в том, что код был сгенерирован на Джерси. Если это так, то вы должны использовать Statuses.class вместо UserType.class. Затем вы можете получить List из StatusType, который затем сможете использовать в цикле for, поскольку List реализует Iterable.

Statuses statuses = twitter.getFriendsStatuses(Statuses.class, null, null); 
for (StatusType statusType : statuses.getStatus()) {
  UserType userType = statusType.getUser();
  System.out.println("<p>" + userType.getName() + "</p>");
}

Но опять же, это просто дикое предположение.

0 голосов
/ 02 января 2011

Реализует ли UserType Collection или Iterable?

Вы можете подать заявку только на каждую коллекцию или массив (или любой другой объект, реализующий Iterable).

...