무엇's 틀린 백업 분야?
로 Java developer,개념의 백업 분야가 조금 외국인이다. 정:
class Sample {
var counter = 0 // the initializer value is written directly to the backing field
set(value) {
if (value >= 0) field = value
}
}
무엇's 이 백업 분야에 대한 좋은? [코 틀린 문서](https://kotlinlang.org/docs/reference/properties.html 드)클래스에서 코 틀린할 수 없습니다. 그러나 때때로 그것이 필요하다는 백 필드를 사용할 때는 주문 접근. 왜? 무슨 차이와 속성을 사용하여 이름 자체 내부에 setter,예를 들어,.
class Sample {
var counter = 0
set(value) {
if (value >= 0) this.counter = value // or just counter = value?
}
}
73
4
기 때문에 말하지 않는 경우't
필드
키워드를't 할 수 있는 실제로 설정/얻은 값을 얻을()
또는세트(value)
. 그것은에 액세스할 수 있습 백업 분야에서 사용자 지정 줍니다.이것은 해당하는 자바의 코드는 샘플:
분명히 이가 좋지 않으로,세터는 infinte 재귀,그 자체로는 결코 변화는 아무것도. 기억에 틀린 때마다 당신이 쓰는
foo.바=value
로 번역될 것입 setter 화 대신PUTFIELD
.편집:자바필동안 코 틀린이특성는 오히려 더 높은 수준의 개념을 보다는 필드가 있습니다.
의 두 가지 유형이 있 속성:중 하나로 백업 분야 중 하나이다.
속성으로 백업 필드 값을 저장 형태다. 된 필드를 저장하는 값에서 메모리가 가능합니다. 예를 들어 같은 속성에
먼저
와두 번째
의 속성은페어링
. 는 숙박 시설은 변화에는 메모리를 표현의페어링
.속성 없이 백업 분야 할 것이 스토어에서 자신의 가치 보다 다른 방법으로 바로 저장하는 메모리에 있습니다. 그것을 계산해야 하는 다른 속성에서,또는,개체. 예를 들어,이러한 특성은
지표
확장자의 재산목록
에는 지원되지 않는 분야,하지만 계산 결과에 따라의 크기는을 제공합니다. 그래서 그't 변화 메모리의 표현을
목록`(수있는't 할 때문에 모든 Java 정적으로 입력).처음에는 나는 너무 힘든 시간을 이해하고 이 개념이다. 그래서 나는 그것을 설명하여 당신의 도움으로 예입니다.
이 코 틀린스 클래스
지금 우리가 볼 때에 코드,우리가 볼 수있는 그것은 2 다.e-크기(기본 접근자)와
isEmpty
(사용자 정의 접근). 그러나 그것만 1 분야,즉크기
. 을 이해하는 것 그것만 1 분야,우리가 볼 Java 에 해당의 이 클래스입니다.가구>코 틀린->쇼 코 틀린 바이트코드 안드로이드 스튜디오에. 클릭 디컴파일.
분명히 우리는 것을 볼 수 있습 java 클래스가 만 getter 및 세터 기능을 위해
isEmpty
,그리고 없는 필드를 선언했습니다. 마찬가지로 코 틀린이 없 백업 분야에 대한 속성isEmpty
기 때문을 제공하지 않't 에 따라 달라는 분야에서 모두. 따라서 백업 분야이다.이제 우리가 사용 getter 및 세터의
isEmpty
을 제공합니다.와 자바의 동등한 위의 클래스
여기서 우리는 모두 필드
크기
와isEmpty
.isEmpty
은 백업 분야기 때문에 getter 및 세터한isEmpty
속성에 따라 달라집니다.백업 분야 좋은 실행하기 위한 유효성 검사 또는 이벤트 트리거링에서의 상태 변경. 생각의 시대를've 추가 코드를 Java 세터/getter. 백업 분야에서 유용할 것 이와 유사한 시나리오. 당신이 사용하는 것을 백업할 때 필드하는 데 필요한 통제 또는 가시성을 통해 세터/getters.
을 할당할 때 필드 필드에 이름을 자체,당신이'실제로 다시 호출하면 컴파일이(즉,
세트(가치)
). 예제에서 당신은,이다.카운터 값=
would recurse 로 설정(값)까지 우리는 오버플로우의 스택이다. 를 사용하여``필드
시 setter(또는 getter)코드입니다.이해 내용*현장한 식별자에 대한 참조로 호텔's 값이다.****나****설정,을 변경하고자 할 때 사용하거나 호텔's 값이다.****나****설정**.
예를 들어:
다음: