Backend/Kotlin

[Kotlin] companion object

findmypiece 2021. 11. 22. 08:56
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