불필요한 일이기는 하지만, 여전히 동반 객체의 이름을 사용해 동반 객체 멤버에 접근할 수도 있다.
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으로 가정한다.