प्रारंभ में, मुझे भी इस अवधारणा को समझने में कठिन समय था। इसलिए मैं आपको उदाहरण की मदद से समझाऊंगा।
इस Kotlin वर्ग
class DummyClass {
var size = 0;
var isEmpty
get() = size == 0
set(value) {
size = size * 2
}
}
पर विचार अब जब हम कोड को देखो, हम देख सकते हैं यह 2 गुण यानी है कि - size
(डिफ़ॉल्ट accessors के साथ) और isEmpty
(कस्टम accessors के साथ)। लेकिन इसमें केवल 1 फ़ील्ड है i.e size
। यह समझने के लिए कि इसमें केवल 1 फ़ील्ड है, आइए हम इस कक्षा के जावा समकक्ष देखें।
टूल्स -> कोटलिन -> एंड्रॉइड स्टूडियो में कोटलिन बाइटकोड दिखाएं। Decompile पर क्लिक करें।
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;
}
}
जाहिर है हम देख सकते हैं कि जावा वर्ग isEmpty
के लिए केवल गेटर और सेटर कार्य करता है, और कोई क्षेत्र इसके लिए घोषित है। इसी तरह कोटलिन में, isEmpty
संपत्ति के लिए कोई समर्थन क्षेत्र नहीं है, क्योंकि संपत्ति उस क्षेत्र पर निर्भर नहीं है। इस प्रकार कोई समर्थन क्षेत्र नहीं।
अब हम कस्टम गेटर और isEmpty
संपत्ति के सेटर को दूर करते हैं।
class DummyClass {
var size = 0;
var isEmpty = false
}
और ऊपर वर्ग के जावा बराबर
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
एक बैकिंग फ़ील्ड है क्योंकि isEmpty
संपत्ति के लिए गेटर और सेटर इस पर निर्भर करता है।
निश्चित रूप से जावा डेवलपर के रूप में यह अवधारणा कुछ है जो आप दिन में दस लाख बार उपयोग करते हैं :) उन सभी 'निजी कुछ क्लास फ़ील्ड; ' – Strelok
संपत्ति के उपयोग में स्वयं का उपयोग करना संपत्ति के लिए कुछ मूल्य निर्दिष्ट करने के बाद एक अंतहीन रिकर्सन होगा हमेशा सेटर कॉल करेंगे। – funglejunk
@Strelok मेरा बुरा .... मैं मान रहा था कि 'k.clin = value' कोटलिन के दस्तावेज़ों को पढ़ने के दौरान जावा समकक्ष के साथ समान है। –