더북(TheBook)

불필요한 일이기는 하지만, 여전히 동반 객체의 이름을 사용해 동반 객체 멤버에 접근할 수도 있다.

val app = Application.Factory.create(args) ?: return

IDE 팁 ≡

인텔리J 코틀린 플러그인은 불필요하게 동반 객체를 참조하는 경우 경고를 표시하고 코드에서 해당 참조를 제거할 것을 제안한다(그림 4-4).

▲ 그림 4-4 불필요한 동반 객체 이름 참조

동반 객체의 경우 정의에서 이름을 아예 생략할 수도 있다. 이런 방식을 더 권장한다.

class Application private constructor(val name: String) {
  companion object {
    fun create(args: Array<String>): Application? {
      val name = args.firstOrNull() ?: return null
      return Application(name)
    }
  }
}

동반 객체 이름을 생략한 경우 컴파일러는 동반 객체의 디폴트 이름을 Companion으로 가정한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.