我开始与kotlin和卡住了一个问题。
我有一个请求函数如下:
fun dumRequest(): MyRequest {
val token = JwtTokenGenerator.createToken(user)
return MyRequest(token.serialize())
}
它作为一个参数传递给一个函数:
val response: ResponseEntity<MyRequest> = callMyRequest(dumRequest())
并且callMyRequest()
是如下的泛型类型:
private inline fun <reified T, reified Y> callMyRequest(request: Y): ResponseEntity<T> {
val headers = HttpHeaders()
headers.add(CONTENT_TYPE, "application/json")
headers.add(AUTHORIZATION, request.token) // I want something like this here
// other business logic
}
我想从传递给callMyRequest()
的请求对象中获取token
,并在AUTH头中设置它。但由于这是一个泛型类型,不确定如何从中获取令牌字段?
任何帮助都将不胜感激。
短暂性脑缺血发作
1条答案
按热度按时间zwghvu4y1#
我真的不认为你需要在这里具体化
Y
,将它限制在一个包含令牌的接口上就足够了,然后让MyRequest
实现这个接口,就像<Y : AuthenticatedRequest>
一样。实际上,您根本不需要
Y
类型参数,因为您可以直接将接口类型作为参数。大概是这样的
当你想把结果反序列化为
T
时,reified
的值就派上用场了,它可以让你不用直接处理类对象就可以做类似response.readEntity<T>()
的事情。