728x90
companion object 는 호출시 자바의 static 처럼 보일 뿐 static 은 아니다.
만약 코틀린에서 해당 자원을 호출한다면 자바의 static 자원을 사용하던 것 처럼 사용하면 되는데 만약 자바에서 호출해야 한다면 companion object 내부 자원에 @JvmStatic 를 추가로 명시해줘야 한다.
예를 들어 Enum 의 @JsonCreator 를 활용할 때가 그렇다. companion object 를 활용해서 enum class 안에 팩토리 메소드를 만들고 @JsonCreator 를 걸어주는데 @JsonCreator 는 명시적으로 static 자원이어야 하기 때문에 @JvmStatic 도 필수로 걸어줘야 한다.
https://www.bsidesoft.com/8187
https://github.com/occidere/TIL/issues/156
https://stackoverflow.com/questions/48780003/why-and-when-to-use-jvmstatic-with-companion-objects
728x90
'Backend > Kotlin' 카테고리의 다른 글
[Kotlin] 제네릭(내가 필요한 것만 정리..) (0) | 2021.12.06 |
---|---|
[Kotlin] inline (0) | 2021.12.06 |
[Kotlin] 코틀린에서 유틸함수 만들기 (0) | 2021.11.24 |
[Kotlin] val, const val (0) | 2021.11.22 |
[Kotlin] 초기화 없이 속성을 선언하는 방법 lateinit (0) | 2021.11.05 |