Language & Framework/Kotlin
[Kotlin] One type argument expected for interface Function<out R>
수미수
2023. 11. 6. 19:24
반응형
오류 내용
자바기반의 스프링 시큐리티 소스를 코틀린으로 변환하면서 아래와 같은 오류가 발생 하였다.
자바 소스
````````````````
private <T> T extractClaim(String token, Function<Claims, T> claimsResolvers) {
final Claims claims = extractAllClaims(token);
return claimsResolvers.apply(claims);
}
````````````````
코틀린 변환 후 코틀린 소스
오류가 나는 부분은 두번째 파라미터인 Function<Claims, T> 이며, 아래와 같은 오류내용이 출력 되었다.
````````````````
private fun <T> extractClaim(token: String, claimsResolvers: Function<Claims, T>): T {
val claims = extractAllClaims(token)
return claimsResolvers.apply(claims)
}
````````````````
오류 출력
One type argument expected for interface Function<out R>
해결 방안
해결 방안으로 코틀린에서 Function Type은 자바와 다르다고 한다. 아래와 같이 코틀린 소스를 변경 하면 해결 된다.
````````````````
private fun <T> extractClaim(token: String, claimsResolvers: (Claims) -> T): T {
val claims = extractAllClaims(token)
return claimsResolvers(claims)
}
````````````````
반응형