본문 바로가기
Android(Kotlin)

[Kotlin Android] 정적 변수와 메소드 :: Companion Object

by 클리마 2022. 5. 30.
728x90

이번 글에서는 Kotlin에서 Static 자료형을 사용하는 방법에 대해 알아보고자 합니다.

 


JAVA에서는 변수나 메소드에static을 선언해주면 정적 자료형을 사용할 수 있었습니다. 그런데 Kotlin에서는 static이라는 자료형이 없는데요.

제목처럼 Kotlin에서는 static 대신 companion object를 사용하여 정적 변수나 메소드를 선언할 수 있습니다. companion object를 사용하면 private properties(private으로 선언된 변수나 메소드)를 읽어올 수 있습니다.

class Book private constructor(val id: Int, val name: String){

    companion object /*이름 설정 가능*/{
        val myBook = "new book"
        fun create() = Book(0, myBook)
    }
}

fun main(){
    val book = Book.Companion.create()
    //이름을 설정했을 경우 Companion 대신 설정한 이름을 넣어준다.
    println("${book.id}, ${book.name}") //0, new book
}

companion object를 사용하면 Interface를 implements하여 사용할 수도 있습니다.

interface IdProvider{
    fun getId(): Int
}

class Book private constructor(val id: Int, val name: String){

    companion object: IdProvider{
        val myBook = "new book"

        override fun getId(){
            return 88
        }
        fun create() = Book(getId(), myBook)
    }
}

 


이상 Kotlin에서 정적 자료형을 사용하는 방법에 대해 알아보았습니다. 정적 자료형은 컴파일 시에 생성되어 소스코드 파일 내부에서 사용할 수 있는 특징이 있습니다. 적절하게 정적 자료형을 사용한다면 더 효율적인 프로그래밍을 할 수 있을 것입니다. 

728x90