Notice
Recent Posts
Recent Comments
Link
반응형
변명은 만개 결과는 한개
[Kotlin] Class companion object 본문
728x90
반응형

Companion
class companion object
일반적인 클래스의 변수와 메소드를 직접 접근할 수 있도록 만들어주는것.
간단히 말하면 java의 static
형태로 접근이 가능한 변수와 메소드를 만들어주는것
- class 내에 정의할 수 있음
- Java 에서처럼 Class.TYPE 형태로 직접 접근 가능
- static은 아님
// class 내에 직접 접근을 위한 함수와 변수 정의
class Sample {
val name: String = "Name"
companion object {
val type: Int = 0
fun isTypeZero(): Boolean {
return type == 0
}
}
}
interface와 함께 사용
interface Base {
val name: String
fun newDefaultMethod()
companion object {
val TYPE: Int = 0
fun isTypeZero(): Boolean {
return TYPE == 0
}
}
}
companion object 접근
// 변수 접근
Base.TYPE
// function 접근
Base.isTypeZero()
Companion 사용않고 java static 변수처럼 접근하기 위해서는
- 변수 : const/@JvmField
- function : @JvmStatic
코틀린에서 제공하는 위 어노테이션 사용
class Base {
companion object {
const val TYPE: Int = 0
@JvmField val NAME: String = "Name"
@JvmStatic fun isTypeZero(): Boolean {
return TYPE == 0
}
}
}
companion object 이름 지정
class MyClass {
companion object Factory {
fun create(): MyClass = MyClass()
}
}
// Kotlin에서 접근 시
MyClass.create()
// Java에서 접근 시
MyClass.Factory.create()
728x90
반응형
'공부 > Kotlin' 카테고리의 다른 글
Kotlin 특징 (0) | 2021.03.04 |
---|---|
[Kotlin] 클래스 init ( Class initializer ) (0) | 2020.11.19 |
[Kotlin] 클래스 상속 ( Class Inheritance ) (0) | 2020.11.19 |
[Kotlin] null (3) : 유용한 null 처리방법 (0) | 2020.11.18 |
[Kotlin] null (2) : null 예외처리 (0) | 2020.11.17 |