प्रारंभ में, मुझे भी इस अवधारणा को समझने में कठिन समय लगा। तो मैं आपको एक उदाहरण की मदद से इसे समझाता हूं।
इस कोटलिन वर्ग पर विचार करें
class DummyClass {
var size = 0;
var isEmpty
get() = size == 0
set(value) {
size = size * 2
}
}
अब जब हम कोड को देखते हैं, तो हम देख सकते हैं कि इसमें 2 गुण हैं - size
(डिफ़ॉल्ट एक्सेसर्स के साथ) और isEmpty
(कस्टम एक्सेसर्स के साथ)। लेकिन इसका केवल 1 क्षेत्र है size
। यह समझने के लिए कि इसमें केवल 1 फ़ील्ड है, आइए हम इस वर्ग के समकक्ष जावा देखते हैं।
Android स्टूडियो में टूल्स -> कोटलिन -> कोटलिन बाइटकोड दिखाएं। 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
संपत्ति के लिए गेट्टर और सेटर इस पर निर्भर करते हैं।