이 문서는 Google Cloud Translation API를 사용해 자동 번역되었습니다.
어떤 문서는 원문을 읽는게 나을 수도 있습니다.
Kotlin의 위임 모델은 위임에 의한 위임이라는 개념을 기반으로 합니다. 이 패턴에서 하나의 개체(위임자)는 다른 개체(위임자)의 요청을 처리할 책임이 있습니다. 위임자는 위임자에게 책임의 전부 또는 일부를 위임할 수 있습니다.
Kotlin에서 위임은 일급 언어 기능입니다. 위임을 사용하여 Observer 패턴, Decorator 패턴 및 Factory 패턴과 같은 일반적인 디자인 패턴을 구현할 수 있습니다. 위임을 사용하여 코드의 성능을 향상시킬 수도 있습니다.
이 게시물에서는 Kotlin의 위임된 속성을 자세히 살펴보겠습니다. 위임된 속성을 만들고 사용하는 방법을 알아보고 위임 사용의 이점을 살펴보겠습니다.
위임 속성은 값이 대리자에 의해 계산되는 속성입니다. 대리자는 속성 값을 계산하는 방법을 알고 있는 개체입니다. Kotlin에서는 by
키워드를 사용하여 위임된 속성을 만들 수 있습니다.
예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. by
키워드를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by lazy {
// compute the name
}
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 Lazy
클래스의 인스턴스입니다. Lazy
클래스는 name
속성 값을 계산하는 방법을 알고 있습니다.
name
속성에 액세스하면 Lazy
인스턴스가 속성 값을 계산하고 반환합니다. 속성에 대한 후속 액세스가 빨라지도록 값이 캐시됩니다.
이전 섹션에서 본 것처럼 'by' 키워드를 사용하여 위임된 속성을 만들 수 있습니다. 예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. by
키워드를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by lazy {
// compute the name
}
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 Lazy
클래스의 인스턴스입니다. Lazy
클래스는 name
속성 값을 계산하는 방법을 알고 있습니다.
name
속성에 액세스하면 Lazy
인스턴스가 속성 값을 계산하고 반환합니다. 속성에 대한 후속 액세스가 빨라지도록 값이 캐시됩니다.
속성 대리자를 사용하여 위임된 속성을 만들 수도 있습니다. 속성 대리자는 속성 값을 계산하는 방법을 알고 있는 개체입니다. Kotlin에서는 'by' 키워드를 사용하여 속성 위임을 만들 수 있습니다.
예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. 속성 대리자를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by NameDelegate()
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 NameDelegate
클래스의 인스턴스입니다. NameDelegate
클래스는 name
속성 값을 계산하는 방법을 알고 있습니다.
name
속성에 액세스하면 NameDelegate
인스턴스가 속성 값을 계산하여 반환합니다. 속성에 대한 후속 액세스가 빨라지도록 값이 캐시됩니다.
Kotlin에서는 'by' 키워드를 사용하여 대리자를 만들 수 있습니다. 예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. by
키워드를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by lazy {
// compute the name
}
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 Lazy
클래스의 인스턴스입니다. Lazy
클래스는 name
속성 값을 계산하는 방법을 알고 있습니다.
name
속성에 액세스하면 Lazy
인스턴스가 속성 값을 계산하고 반환합니다. 속성에 대한 후속 액세스가 빨라지도록 값이 캐시됩니다.
속성 대리자를 사용하여 대리자를 만들 수도 있습니다. 속성 대리자는 속성 값을 계산하는 방법을 알고 있는 개체입니다. Kotlin에서는 'by' 키워드를 사용하여 속성 위임을 만들 수 있습니다.
예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. 속성 대리자를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by NameDelegate()
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 NameDelegate
클래스의 인스턴스입니다. NameDelegate
클래스는 name
속성 값을 계산하는 방법을 알고 있습니다.
name
속성에 액세스하면 NameDelegate
인스턴스가 속성 값을 계산하여 반환합니다. 속성에 대한 후속 액세스가 빨라지도록 값이 캐시됩니다.
Kotlin에서는 by
키워드를 사용하여 맵에 위임할 수 있습니다. 예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. by
키워드를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by mapOf("id" to 1, "name" to "John")
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 지도입니다. 이름
속성에 액세스하면 지도에서 이름
키를 검색합니다. 키가 발견되면 해당 값이 반환됩니다. 키를 찾을 수 없으면 예외가 발생합니다.
Kotlin에서는 'by' 키워드를 사용하여 속성에 위임할 수 있습니다. 예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. by
키워드를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by lazy {
firstName + " " + lastName
}
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 속성입니다. name
속성에 액세스하면 firstName
및 lastName
속성이 액세스되고 연결됩니다. 결과가 반환됩니다.
Kotlin에서는 by
키워드를 사용하여 함수에 위임할 수 있습니다. 예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. by
키워드를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by lazy {
computeName()
}
}
이 예에서 name
속성은 위임된 속성입니다. 델리게이트는 함수입니다. name
속성에 액세스하면 computeName()
함수가 호출됩니다. 결과가 반환됩니다.
Kotlin에서는 by
키워드를 사용하여 객체에 위임할 수 있습니다. 예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. by
키워드를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by NameDelegate()
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 객체입니다. name
속성에 액세스하면 NameDelegate
개체가 속성 값을 계산하는 데 사용됩니다. 결과가 반환됩니다.
Kotlin에서는 'by' 키워드를 사용하여 클래스에 위임할 수 있습니다. 예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. by
키워드를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by lazy {
NameDelegate.computeName()
}
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 클래스입니다. name
속성에 액세스하면 NameDelegate.computeName()
메서드가 호출됩니다. 결과가 반환됩니다.
Kotlin에서는 'by' 키워드를 사용하여 슈퍼클래스에 위임할 수 있습니다. 예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. by
키워드를 사용하여 이 속성을 만들 수 있습니다.
class User : SuperUser() {
val name: String by lazy {
super.name
}
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 슈퍼클래스의 name
속성입니다. name
속성에 접근하면 슈퍼클래스의 name
속성에 접근하게 됩니다. 결과가 반환됩니다.
Kotlin에서는 'by' 키워드를 사용하여 동반 객체에 위임할 수 있습니다. 예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. by
키워드를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by lazy {
User.name
}
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 컴패니언 객체의 name
속성입니다. name
속성에 접근하면 컴패니언 객체의 name
속성에 접근하게 됩니다. 결과가 반환됩니다.
Kotlin에서는 by
키워드를 사용하여 인터페이스에 위임할 수 있습니다. 예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. by
키워드를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by NameDelegate()
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 인터페이스입니다. name
속성에 액세스하면 NameDelegate
인터페이스가 속성 값을 계산하는 데 사용됩니다. 결과가 반환됩니다.
Kotlin에서는 'by' 키워드를 사용하여 추상 클래스에 위임할 수 있습니다. 예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. by
키워드를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by lazy {
NameDelegate.computeName()
}
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 추상 클래스입니다. name
속성에 액세스하면 NameDelegate.computeName()
메서드가 호출됩니다. 결과가 반환됩니다.
Kotlin에서는 by
키워드를 사용하여 객체 리터럴에 위임할 수 있습니다. 예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. by
키워드를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by mapOf("id" to 1, "name" to "John")
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 객체 리터럴입니다. 이름
속성에 액세스하면 지도에서 이름
키를 검색합니다. 키가 발견되면 해당 값이 반환됩니다. 키를 찾을 수 없으면 예외가 발생합니다.
Kotlin에서는 by
키워드를 사용하여 중첩 클래스에 위임할 수 있습니다. 예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. by
키워드를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by lazy {
NestedClass.name
}
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 중첩 클래스입니다. name
속성에 액세스하면 NestedClass.name
속성에 액세스됩니다. 결과가 반환됩니다.
Kotlin에서는 by
키워드를 사용하여 내부 클래스에 위임할 수 있습니다. 예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. by
키워드를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by lazy {
InnerClass.name
}
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 내부 클래스입니다. name
속성에 액세스하면 InnerClass.name
속성에 액세스됩니다. 결과가 반환됩니다.
Kotlin에서는 'by' 키워드를 사용하여 익명 개체에 위임할 수 있습니다. 예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. by
키워드를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by lazy {
object: NameDelegate {
override fun computeName(): String {
// compute the name
}
}
}
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 익명 개체입니다. name
속성에 액세스하면 익명 개체의 computeName()
메서드가 호출됩니다. 결과가 반환됩니다.
Kotlin에서는 by
키워드를 사용하여 람다에 위임할 수 있습니다. 예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. by
키워드를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by lazy {
// compute the name
}
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 람다입니다. name
속성에 액세스하면 람다가 호출됩니다. 결과가 반환됩니다.
Kotlin에서는 by
키워드를 사용하여 메서드 참조에 위임할 수 있습니다. 예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다. by
키워드를 사용하여 이 속성을 만들 수 있습니다.
class User {
val name: String by lazy {
User::name
}
}
이 예에서 name
속성은 위임된 속성입니다. 대리자는 메서드 참조입니다. name
속성에 액세스하면 User
클래스의 name
메서드가 호출됩니다. 결과가 반환됩니다.
Kotlin에서는 by
키워드를 사용하여 생성자에게 위임할 수 있습니다. 예를 들어 사용자를 나타내는 클래스가 있다고 가정합니다. 사용자 이름을 저장하는 속성을 만들 수 있습니다.