如何在Interface RequestSpecification中返回参数化List <t>?</t>

时间:2013-05-14 15:25:05

标签: java rest

当我get请求接口RequestSpecification并且我想要返回参数化List<T>时,我必须在方法.as()中做什么?它突出大胆! 也许我必须指定列表的一个实现?但我需要特定的参数化List

List<> response = given().parameter(x,x)
                   .expect()
                   .statuscode(200)
                   .when()
                   .get("some kind of GET")
                   **.as(List<>.class)**

2 个答案:

答案 0 :(得分:2)

欢迎输入类型擦除。所有列表在运行时都是相同的。除非您将参数类型的类型信息作为类对象,否则您所能做的就是:

@SuppressWarnings("unchecked")
List<DesiredType> response = (List<DesiredType>)given().parameter(x,x)
               .expect()
               .statuscode(200)
               .when()
               .get("some kind of GET")
               .as(List.class);

请注意,如果这会放入非DesiredType类型的对象,稍后访问该列表时会遇到问题。

答案 1 :(得分:0)

由于type erasure,您不能拥有List<String>.class,因为它在运行时实际上与List<Integer>.classList<Dog>.classList.class相同。

您可以您的列表投射到List<T>,但这非常危险(因此您会收到警告)。 (见Jan's answer。)