Java를 Kotlin으로 변경하면서 새로운 이슈에 맞딱뜨렸다.. entries 인식이 안되더라....
아래 사진은 Enum에 있는 메소드중 하나인데 언어 형식을 받아서 value가 같다면 해당 데이터로 return하고 없다면 ENGLISH로 return하는 자바 코드이다.
이를 코틀린으로 변경하면 정말 매우매우매우 짧은 코드가 된다.
entries가 뭔지 찾아보다가 코틀린 1.9.0에서는 몇가지 부분이 변경되었다는 걸 알게 되었다. values()에 많은 문제가 있었던 것 같다.
이 기능은 Kotlin 1.8.20부터 실험적으로 제공되고 Kotlin 1.9.0부터 안정적으로 제공될 예정이며 이것은 미리 할당 된 enum 상수의 불변 리스트를 반환하며 컬렉션으로 작업할 때 유용하고 성능 문제를 방지하는 데 도움이 될 수 있다.
더 자세한 내용은 아래 링크에서 확인할 수 있고, 감사하게도 정리가 잘 되어있는 블로그가 있어 해당 블로그 링크도 첨부한다.
https://github.com/Kotlin/KEEP/blob/master/proposals/enum-entries.md#examples-of-performance-issues
https://onlyfor-me-blog.tistory.com/768
아무튼.. 문제는 제목과 같았다.
위의 사진들은 수정한 코드 이후 캡쳐한 사진이라 사진상에서는 볼 수 없지만 entries 부분을 자꾸 인식을 못하고 빨간글씨로 나오는거다..
그래서 뭐가 다른건가 하면서 검색을 하는데 못찾아서 인식이 되는 다른 분과 비교해보니 결국 원인은 인텔리제이 설정 문제였다..
코틀린 설정을 한다고 했지만 내 코틀린 버전은 아래 사진처럼 1.8.0버전이였다 ^^..
버전 업데이트를 해야 하는데 자꾸 업데이트가 안나오는거다.. ㅠㅠㅠㅠㅠ 사진처럼 DISABLE만 있었다.
1.9.0이 최신 버전인데 내 인텔리제이는 인식을 못하고 있었다..;
인텔리제이 종료하고 새로 시작 해도 새로운 버전이 나오지 않길래 구글링도 여러번 해보고 인텔리제이 공식 홈페이지 들어가서 버전 수동 다운도 해보는 등 여러가지를 시도했는데도 안돼서... 결국 모든 캐시를 다 지우고 새로 시작했다.
그랬더니.. 떴다! 그래서 업데이트를 하였고 최신 버전인 1.9.10이 되었다!
설정 > Build, Execution, Deployment > Compiler > Kotlin Compiler를 봐도 1.9.0으로 되어 있다.
이렇게 해야 비로소.. enties 인식이 되었다.
혹시 나처럼 entries 인식이 안되는 분들은 인텔리제이 코틀린 버전을 확인해보길 바란다.
'개발하면서 겪은 어려움들' 카테고리의 다른 글
Redis JPA 연동하기 에러편 - Did you forget to provide one using @Id (0) | 2023.09.20 |
---|