2013-06-04 8 views
5

मैं अपने greenDAO इकाइयों में कुछ कस्टम कोड जोड़ना चाहता हूं। मैंने देखा कि संरक्षित क्षेत्रों की तरह कुछ है। लेकिन मुझे अपने गिट भंडार में जेनरेट की गई कक्षाओं में जांच करने का विचार पसंद नहीं है। मैं इसके लिए विरासत का उपयोग करना चाहता हूं।greenDAO इकाइयों को कस्टम कोड जोड़ना

यानी मेरे पास एक इकाई User है। इसलिए मैं ग्रीनडाओ को UserBase नामक कक्षा उत्पन्न करने के लिए चाहता हूं। यह मैं इस तरह User से विस्तार करने और एक विधि लागू करना चाहते हैं:

public String getFullName() { 
    return this.first + " " + this.last; 
} 

कहाँ first और last कामयाब गुण हैं।

लेकिन मुझे नहीं पता कि ग्रीनडाओ को जेनरेट की गई इकाई UserBase के बजाय User कक्षा का उपयोग करने के बारे में कैसे बताना है। क्या इसे करने का कोई तरीका है?

आप प्रत्येक इकाई के लिए एक माता पिता दर्ज कर सकते हैं:

Entity user = schema.addEntity("User"); 
... 
user.setSuperclass("UserBase"); 

तो तुम एक अमूर्त वर्ग के रूप में UserBase लागू कर सकते हैं

+0

आप उपयोगकर्ताबेस में 'getFullName' विधि क्यों नहीं डालते? – AMerle

+0

क्योंकि तब मुझे जेनरेट की गई फाइल को मेरे गिट में जांचना होगा। लेकिन कक्षा का सबसे बड़ा हिस्सा उत्पन्न होता है और इसकी जांच करने की आवश्यकता नहीं होती है। आप आरजेवा को भी चेक नहीं करते हैं, क्या आप नहीं? – keineantwort

+0

नहीं, लेकिन मैं अपने जेनरेट किए गए वर्ग जोड़ता हूं। – AMerle

उत्तर

6

मैं एक तरह से यह कैसे हल करने के लिए मिल गया।

public abstract class UserBase { 

    public String getFullName() { 
    return getFirst() + " " + getLast(); 
    } 

    public abstract int getFirst(); 
    public abstract int getLast(); 
} 

यहाँ नुकसान आपको उन तक पहुंचने सार तरीके के रूप में उत्पन्न ही टिककर खेल घोषित करने के लिए है कि है।

+0

इसे पोस्ट करने के लिए धन्यवाद! मेरे पास एक ही सटीक मुद्दा था और यह गोल्ड है! जब तक आप इस विधि को पोस्ट नहीं करते, तब तक मैं अपने दाओ को विस्तारित करने के लिए संघर्ष कर रहा था। – AutoM8R

7

सामान्य दृष्टिकोण जनरेटेड इकाइयों में "अनुभागों को रखें" का उपयोग करना है। अनुभागों को सीधे उत्पन्न इकाई में सदस्यों और विधियों को जोड़ने की अनुमति दें। विवरण के लिए यहां देखें: http://greendao-orm.com/documentation/modelling-entities/

+0

"अनुभाग रखें" या एमडीडी शर्तों में "संरक्षित क्षेत्रों" में कई नुकसान हैं: * आपको वीसीएस * में जेनरेट कोड को चेक करना होगा * आपको कोड को साफ रखना होगा। कहीं भी अनुभाग रखने के लिए एक हस्ताक्षर होना है। यदि आप इस हस्ताक्षर को तोड़ते हैं (जैसे दुर्घटना या कोड स्वरूपण) तो आप कोड खो देंगे – keineantwort

संबंधित मुद्दे