当我get
请求接口RequestSpecification
并且我想要返回参数化List<T>
时,我必须在方法.as()
中做什么?它突出大胆!
也许我必须指定列表的一个实现?但我需要特定的参数化List
!
List<> response = given().parameter(x,x)
.expect()
.statuscode(200)
.when()
.get("some kind of GET")
**.as(List<>.class)**
答案 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>.class
,List<Dog>.class
和List.class
相同。
您可以将您的列表投射到List<T>
,但这非常危险(因此您会收到警告)。 (见Jan's answer。)