国产一区二区精品久久_蜜桃狠狠狠狠狠狠狠狠狠_午夜视频精品_激情都市一区二区

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > EMF開發指南之Attribute詳解

EMF開發指南之Attribute詳解
2010-01-14 22:43:44  作者:  來源:
★simple attribute沒什么好說的,是最基本的類型,與單值(single value)的java基本類型(int,boolean,String等)相對應
★data type attribute,所有由emf model生成的類型都是由EObject派生的,不過還有一些類不是從EObject派生的,這時候就需要自定義一個Ecore Date Type 和我們要使用的類型對應,在這里定義的data type只是起符號的作用,在使用的時候跟simple data沒什么區別,在運行的時候將作為一個實際java類型的代理存在,在emf model中,所有的類型都是EDataType的一個實例,與基本類型不同在于,int,boolean,String是emf model預定義的(java.util.Date也是基本類型,而java.sql.Date不是),對于自定義的data type來說,還存在一個問題,就是序列化(或反序列化)的時候,需要將自定義的類型串行化成string(或反之),默認會調用toString方法,但是emf framework提供了更好的方式,即在package的Factory類中增加了兩個方法convertXxxxToString(EDataType eDataType, Object instanceValue) 和createXxxxFromString(EDataType eDataType, String initialValue) ,我們可以替換里面的默認做法使用自己的實現,因此每次增加一個自定義的DataType類型的時候,我們也要在factory中重新實現這兩個方法。
★在annotated java中無須定義Data Type接口,emf generator會根據相關attribute在Package和Factory類中添加與EDataType相關的內容。
★enumeration attribute,attribute表示類型、狀態的時候一般采用枚舉類型屬性。因為生成的enumeration 類都有一個private的構造函數,因此可以使用==來比較兩個enumeration的異同。同時enumeration還包含一系列int類型的常量來表示每種枚舉類型的實際值。
★multi-value attribute 就是對應的get方法返回值是EList(Array)的attribute,如果希望List中的每一個值均唯一,那么需要設置unique為true,一般情況下,我們不使用String[]作為multi-value attribute,這個主要跟notification有關,一般數組只是針對char和byte的情況。
★java.util.List和EList之間的區別是后者多了一個remove()方法
★default value 只有single valued attribute(data type attribute也算一種single valued attribute)才有默認值,默認情況下,boolean是false,數字類型是0,對象類型是null,如果是非string類型的attribute,ecore model將采用factory中的convertStringToXxxx方法將制定的字符串默認值轉換成指定的值
★volatile attribute 默認情況下將使用一個field來保存attribute的值,但是volatile類型的屬性有些特別,在get的時候它不會采用保存在field中的值而是運行時計算。通常volatile類型的attribute也是non changeable的,因為volitale類型的attribute通常都是通過計算得到,提供setter方法沒有 意義,所以在設置volatile為true的時候不要忘了把changeable也設置為false
★non-changeable attribute 默認情況下attribute都是changeable,non-changeable的attribute將不提供setter方法,而對于multi-value attribute屬性來說,屬性值的內容改變可以通過相應的容器接口來做到,因此setter方法對于multi-value attribute是不會生成的,non-changeable因此對該類屬性也是沒有意義的
★unsettable attribute 有時候我們希望某個屬性處于未設置值的狀態,這種狀態跟初始化設置的默認值不同(默認情況下,我們會認為屬性未設置和屬性為默認值兩種狀態是一樣的),當unsettable為ture時,emf generator會追蹤指定attribute的設置狀態,是未設置,還是已被設置,同時還提供了unsetXxxx()方法來將attribute恢復到未設置狀態。對于multi-valued attribute則將unsettable相關的工作交給InternalEList.Unsettable處理,使用unsettable所帶來的一個后果就是因為需要相應的屬性來保留狀態,因此生成的類會比較大。

安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢