以下代码为jjwt 库定义了一个SigningKeyResolverAdapter
private val parser = Jwts.parserBuilder().setSigningKeyResolver(object : SigningKeyResolverAdapter() {
override fun resolveSigningKey(header: JwsHeader<*>, claims: Claims): Key {
return runBlocking {
keyRetriever.getPublicKey(header.keyId)
}
}
}).build()
kotlin 编译失败并出现以下错误:
无法在 var 中推断类型参数 T!>
JwsHeader.keyId:字符串!以下替换均无
接收者:JwsHeader 参数:()
接收器:JwsHeader!> 参数:()接收器:
JwsHeader 参数:() 接收者:
JwsHeader!> 参数:() 接收者:
JwsHeader!>!> 参数:() 接收者:
JwsHeader!> arguments: () 可以
应用于接收者:JwsHeader<*> 参数:()
当线
keyRetriever.getPublicKey(header.keyId)
改为
keyRetriever.getPublicKey(header["kid"] as String)
一切正常。
我不明白为什么这种变化会有所作为。header.keyId 也返回一个字符串。