1
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);
    }
4

2 回答 2

4

那是因为UserType没有实现Iterable<T>。因此,您不能使用增强的for( foreach ) 循环对其进行迭代。


编辑:鉴于您提供的示例,我猜测代码是由 Jersey 生成的。如果是这种情况,那么您应该使用Statuses.class而不是UserType.class. 然后,您可以获得 a Listof StatusType,然后您可以在for循环中使用它,因为Listimplements 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>");
}

但话又说回来,这只是一个疯狂的猜测。

于 2011-01-02T01:50:38.787 回答
0

UserType 是实现 Collection 还是 Iterable?

您只能将 each 应用于集合或数组(或任何实现 Iterable 的东西)。

http://leepoint.net/notes-java/flow/loops/foreach.html

于 2011-01-02T01:50:58.153 回答