처음에 저도이 개념을 이해하는 데 어려움을 겪었습니다. 예를 들어 설명하겠습니다.
이 Kotlin 클래스 고려
class DummyClass {
var size = 0;
var isEmpty
get() = size == 0
set(value) {
size = size * 2
}
}
이제 코드를 살펴보면 size
(기본 접근 자 포함) 및 isEmpty
(사용자 지정 접근 자 포함) 두 가지 속성이 있음을 알 수 있습니다 . 그러나 그것은 단지 하나의 필드를 가지고 size
있습니다. 필드가 하나뿐임을 이해하기 위해이 클래스에 해당하는 Java를 살펴 보겠습니다.
Tools-> Kotlin-> Show Kotlin ByteCode in Android Studio로 이동합니다. 디 컴파일을 클릭하십시오.
public final class DummyClass {
private int size;
public final int getSize() {
return this.size;
}
public final void setSize(int var1) {
this.size = var1;
}
public final boolean isEmpty() {
return this.size == 0;
}
public final void setEmpty(boolean value) {
this.size *= 2;
}
}
분명히 우리는 자바 클래스에에 대한 getter 및 setter 함수 만 있고 이에 대해 isEmpty
선언 된 필드가 없음을 알 수 있습니다. 마찬가지로 Kotlin에는 property isEmpty
에 대한 지원 필드가 없습니다 . 속성이 해당 필드에 전혀 의존하지 않기 때문입니다. 따라서 지원 필드가 없습니다.
이제 isEmpty
속성 의 사용자 지정 getter 및 setter를 제거하겠습니다 .
class DummyClass {
var size = 0;
var isEmpty = false
}
그리고 위의 클래스에 해당하는 Java는 다음과 같습니다.
public final class DummyClass {
private int size;
private boolean isEmpty;
public final int getSize() {
return this.size;
}
public final void setSize(int var1) {
this.size = var1;
}
public final boolean isEmpty() {
return this.isEmpty;
}
public final void setEmpty(boolean var1) {
this.isEmpty = var1;
}
}
여기에서 필드 size
와 isEmpty
. 속성에 isEmpty
대한 getter 및 setter가 isEmpty
종속 필드이므로 지원 필드 입니다.