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

    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으로 가정한다.

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