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)
}

````````````````
반응형