Web services 从Restful服务获取对象列表时遇到问题

Web services 从Restful服务获取对象列表时遇到问题,web-services,generics,rest,jersey,java-ee-6,Web Services,Generics,Rest,Jersey,Java Ee 6,嘿,伙计们。我在REST中开发了一些运行在Glassfish 3.1上的服务 我有一个JavaSE应用程序,我使用Jersey作为客户端api public <T> T findAll_JSON(Class<T> responseType) throws UniformInterfaceException { WebResource resource = webResource; return resource.accept(MediaType.APPL

嘿,伙计们。我在REST中开发了一些运行在Glassfish 3.1上的服务

我有一个JavaSE应用程序,我使用Jersey作为客户端api

 public <T> T findAll_JSON(Class<T> responseType) throws UniformInterfaceException {
    WebResource resource = webResource;
    return resource.accept(MediaType.APPLICATION_JSON).get(responseType);
}
public T findAll_JSON(类响应类型)抛出UniformInterfaceException{
WebResource=WebResource;
返回resource.accept(MediaType.APPLICATION_JSON).get(responseType);
}
这是Netbeans生成的客户机代码

我的主要问题是将对象列表作为响应类型传递

这是客户端代码

   List<PkgLine> pkgLine = service.findAll_JSON(List.class);        
    System.out.println(pkgLine.get(5).getLineStatus());          
    service.close();
List-pkgLine=service.findAll_-JSON(List.class);
System.out.println(pkgLine.get(5.getLineStatus());
service.close();
显然,这不起作用,因为响应需要是PkgLine的列表。我如何将其作为泛型传递?我的服务设置为返回PkgLine列表。谢谢。

问题是“擦除”。您可以在程序中声明一个
列表
,但在运行时,列表中的对象是pkgline的信息将被删除<代码>列表、
列表
列表
在运行时都是相同的类型。(这是有原因的;我不在这里解释,但如果您感兴趣,可以查找“擦除”。)

当然,列表中的对象仍然是PkgLine,但对于列表,它们只是对象,您必须将每个对象强制转换为PkgLine。这不漂亮

List<?> pkgLine = service.findAll_JSON(List.class);
System.out.println(((PkgLine)(pkgLine.get(5))).getLineStatus());
service.close();
List-pkgLine=service.findAll_-JSON(List.class);
System.out.println(((PkgLine)(PkgLine.get(5)).getLineStatus();
service.close();

解析数组怎么样?它具有相同的json表示。 你可以这样写:

resource.accept(MediaType.APPLICATION_JSON).get(PkgLine[].class);