मुझे नहीं पता कि एनोटेशन कभी भी एक इंटरफ़ेस को प्रतिस्थापित करेगा, लेकिन मैं आकर्षण को देख सकता हूं। यह सब कार्यान्वयन पर निर्भर करता है हालांकि।
एनोटेशन कोड का आगे वर्णन करने के लिए मेटा डेटा प्रदान करते हैं, जो उपभोक्ता (अधिकांश समय) प्रतिबिंबों का उपयोग करके रनटाइम पर व्याख्या करता है। एक इंटरफेस का उपयोग, कार्यान्वयन का यह अनुबंध स्पष्ट रूप से परिभाषित किया गया है।
आप हो सकता है:
interface CrudDao<T> {
Serializable create(T t);
T read(Serializable id);
void update(T t);
void delete(T t);
}
यह एक बोझिल लागू करने के लिए अनुबंध होगा, और संभावना विधि श्रृंखलन के कुछ प्रकार उठाना होगा।
class SomeDao {
@Create
long create(SomeEntity e) { // code }
@Read
SomeEntity read(long id) { // code }
@Update
void update(SomeEntity e) { // code }
@Delete
void delete(SomeEntity e) { // code }
}
दोष यह है कि इसका इस्तेमाल करने की बोझिल होगा:
class CrudFactory {
long create(Class clazz, Object obj) {
// loop through methods
// find method with @Create
// call method
}
}
इस उदाहरण में एनोटेशन overkill को अधिकांश समय हो सकता है, IMO
इसके बजाय आप की तरह कुछ कर सकता है । स्पष्ट रूप से परिभाषित, अच्छी तरह से प्रलेखित अनुबंध के बारे में कुछ कहना है।
मैं कक्षा में फ़ील्ड जोड़ने के लिए इंटरफेस का उपयोग करके क्या मतलब है इसके बारे में थोड़ा उलझन में हूं। क्या आपका मतलब विधियों और गेटर-सेटर विधियों को जोड़ने के लिए एनोटेशन का उपयोग करना है? – Uri
क्या आप यहां स्निपेट भी साझा कर पाएंगे? यह आपके प्रश्न को समझने में निश्चित रूप से हमारी मदद करेगा। –