我已经实现了以下类,并使用 REST 调用为给定类型的 T 实现了一个搜索方法获取对象列表。
public class AmapiService<T extends Resource> implements RestService<T> {
@Override
public List<T> search( MultivaluedMap<String, String> aQueryParams ) {
MultivaluedMap<String, String> lQueryParams = aQueryParams;
Client lClient = buildClient();
WebTarget ltarget = lClient.target( iRestDriver.target( aApiUrl ).getUri() );
for ( String lKey : lQueryParams.keySet() ) {
ltarget = ltarget.queryParam( lKey, lQueryParams.getFirst( lKey ) );
}
List<T> lObjects = null;
lObjects = ltarget.request( MediaType.APPLICATION_JSON ).get( new GenericType<List<T>>() {
} );
return lObjects;
}
}
这就是为类和搜索方法调用创建实例的方式。
AmapiService<RFQDefinition> RFQService =
new AmapiService<RFQDefinition>();
List<RFQDefinition> qfq = RFQService.search( lQueryParam );
当我运行这个我得到以下错误
May 07, 2018 1:48:14 PM org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor aroundReadFrom
SEVERE: MessageBodyReader not found for media type=application/json, type=interface java.util.List, genericType=java.util.List<T>.
这意味着 RFQDefinition 未设置为new GenericType<List<T>>().
我如何将类型从 T 中设置AmapiService<T extends Resource>
为new GenericType<List<T>>()
如果我定义它new GenericType<List<RFQDefinition>>()
而不是 T 它的工作