我正在尝试调用签名包含参数Class<T>
的方法
以下是kotlin中的示例代码
val response: ResponseEntity<ResponseObject<*>> = testRestTemplate.postForEntity("/users", user, ResponseObject::class.java)
我想要实现的是摆脱responseObject中的
<*>
并使其成为val response: ResponseEntity<ResponseObject<User>> = ???
但我不确定要提供什么正确的语法来满足
Class<T>
要求我试过了
ResponseObject<User::class.java>::class.java
但这不是有效的语法。有指针吗?
真正的问题是,如果我使用
*
我不知道如何正确地从那里正确推断User
实例。 最佳答案
好的,我设法使用when
使用类型转换解决了我的问题
@Test
fun testCreateUser() {
val user = User(id = null)
val response = testRestTemplate.postForEntity("/users", user, ResponseObject::class.java)
val responseObject = response.body
when (val returnedUser = responseObject.model) {
is User -> {
assertNotNull(returnedUser.id)
assertEquals(UserStatus.active, returnedUser.status)
}
}
}