2012-09-12 28 views
5

मेरे पास एक एक्लास Vehicle है जिसमें enum विशेषता BreakType breakType है।ईकॉम और जेन मॉडल में डिफ़ॉल्ट मान = शून्य के साथ enum संदर्भ कैसे सेट करें?

BreakType{ 
    DRUM(0), DISC(1), BLADE(2) 
} 

मैं शून्य पर विशेषता breakType डिफ़ॉल्ट सेट करना चाहते हैं:

BreakType रूप में एक ही Ecore मॉडल में परिभाषित किया गया है। उस के लिए मैं breakType के लिए निम्नलिखित गुण सेट attribute->

DefaultLiteralValue: // it's blank 
Unsettable: True 

Properties of BreakType enum 
Default Value : DRUM=0 // this is shown in editor UI even If i remove it from xml. 

मैं इसे से बाहर पीढ़ी-मॉडल और कोड जनरेट करने के बाद क्या हो रही है

BreakType breakType = DRUM // attribute set with default value 

है कैसे शून्य पर मैं इसे सेट कर सकते हैं, डिफ़ॉल्ट रूप से ?

उत्तर

1

मुझे नहीं लगता कि आप कर सकते हैं। यदि आप defaultValueLiteral संपत्ति के माध्यम से डिफ़ॉल्ट मान प्रदान करने में विफल रहते हैं तो ईएमएफ स्वचालित रूप से विशेषता के प्रकार के लिए उपयुक्त मान चुनता है। एक गणित प्रकार के लिए, यह पहला शाब्दिक मूल्य है जो इसे परिभाषित करता है।

आप हमेशा जेनरेट कोड को संशोधित कर सकते हैं। या हो सकता है आप unsettable सुविधा प्रदान करने के उत्पन्न तरीकों का उपयोग करना चाहिए:

void unsetAttribute(); 
boolean isSetAttribute(); 

और बजाय सेट किए बिना राज्य null मूल्य के लिए जाँच करें।

+0

धन्यवाद जोस। यह उपयोगी होगा –

+4

एमएमएम, देखो कि मैं ईएमएफ व्यंजनों में क्या आया हूं। मैंने अभी तक इसका परीक्षण नहीं किया है, लेकिन हो सकता है कि आप यही खोज रहे थे: [गणना करने वाले गणना-आधारित विशेषताओं को उत्पन्न करना] [http://wiki.eclipse.org/EMF/Recipes#Recipe:_Generating_enumeration-based_attributes_that_support_null) –

+0

लिंक्ड ईएमएफ रेसिपी के विकल्प के रूप में, आप एक अतिरिक्त एनम इंस्टेंस को परिभाषित कर सकते हैं, जिसे कहा जा सकता है, और सुनिश्चित करें कि एक डिफ़ॉल्ट के रूप में उपयोग किया जाता है, यानी पारिस्थितिकीय में इसे शाब्दिक सूची के शीर्ष पर ले जाएं (उस के लिए डिफ़ॉल्ट मान enum प्रकार स्वचालित रूप से समायोजित किया जाएगा)। इसके साथ कम से कम एक अपरिभाषित डिफ़ॉल्ट मान जगह पर है, हालांकि यह शून्य नहीं है। –

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