object Application {
val name = "My Application"
override fun toString() = name
fun exit(){}
}
import Application.exit
fun main() {
println(Application.name)
exit()
}
import Application.Companion.create
class Application private contructor(val name: String) {
companion object {
fun create(args: Array<String>): Application? {
val name = args.firstOrNull() ?: return null
return Applicaiton(name)
}
}
}
fun main(args: Array<String>) {
val app = create(args) ?: return
println("Application started: ${app.name}")
} 생성자를 비공개로 지정해 클래스 외부에서 사용할 수 없게 한 다음, 내포된 객체에 팩토리 메서드 역할을 하는 함수를 정의하고 그 함수 안에서 필요에 따라 객체의 생성자를 호출fun main() {
fun minPoint(xRange: Integer, yRange: IntRange) = object {
val x = (xRange.first + yRange.last)/2
val y = (yRange.first + XRange.last)/2
}
val midPoint = minPoint(1..5, 2..6)
println("${minPoint.x}, ${minPoint.y}")
}
출처