मान लीजिए कि मैं जावा में विभिन्न जानवरों का मॉडलिंग कर रहा हूं। प्रत्येक जानवर में इन क्षमताओं का कुछ संयोजन होता है: चलना, तैरना और उड़ना। उदाहरण के लिए, क्षमता सेट स्थिर है।जावा में, क्या मुझे निरंतर गुणों के लिए गेटर्स या इंटरफ़ेस टैगिंग का उपयोग करना चाहिए?
मैं इस जानकारी को उन गेटर्स के रूप में स्टोर कर सकता हूं जो स्थिरांक लौटाते हैं। उदाहरण के लिए:
public class Penguin implements Animal {
public boolean canWalk() {
return true;
}
public boolean canSwim() {
return true;
}
public boolean canFly() {
return false;
}
// implementation...
}
रन-टाइम की जांच तो है:
if (animal.canFly()) {
// Fly!
}
या मैं उपयोग कर सकते हैं "टैगिंग" इंटरफेस:
public class Penguin implements Animal, Flyer, Swimmer {
// implementation...
}
रन-टाइम की जांच तो है:
if (animal instanceof Flyer) {
// Fly!
}
के फायदे और नुकसान क्या हैं प्रत्येक दृष्टिकोण?
रनटाइम पर उपलब्ध होने के लिए आपको एनोटेशन इंटरफ़ेस के लिए पैरामीटर की आवश्यकता है। – Dariusz
@Dariusz अच्छा पकड़ो! संपादित। – sh0rug0ru
यह एक आम गलतफहमी है कि एनोटेशन मार्कर इंटरफेस के लिए एक प्रतिस्थापन है। _ प्रभावशाली जावा आइटम # 37: टाइप_ को परिभाषित करने के लिए मार्कर इंटरफेस का उपयोग करें, विशेष रूप से एनोटेशन पर मार्कर इंटरफेस के फायदे बताते हैं। – jaco0646