亚洲成人一区在线观看_天堂网www_国产精品久久9_中文在线播放_伊人天天_久久精品久久久精品美女

當(dāng)前位置:首頁 > 網(wǎng)站舊欄目 > 學(xué)習(xí)園地 > 設(shè)計軟件教程 > EMF開發(fā)指南之Attribute詳解

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

安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
主站蜘蛛池模板: 东京久久久 | 国产一区二区三区久久久久久久久 | 夜夜艹 | 一级黄色大片免费观看 | 久久99精品国产99久久6男男 | 国产欧美日韩综合精品一区二区 | 黄色国产视频 | 成人一级毛片 | 山岸逢花在线观看无删减 | 亚洲一区二区三区四区五区中文 | 米奇狠狠操 | 亚洲综合激情网 | 亚洲国产精品99久久久久久久久 | 日本美女影院 | 日韩综合网 | 日韩欧美综合 | 精品国产成人 | 欧美一区二区黄色片 | 国产一区二区久久久 | 在线观看中文字幕亚洲 | 国产精品毛片在线 | 午夜专区 | 亚洲三级在线看 | 日韩一区二区三区精品 | 日韩免费一区 | 最新午夜| 骚黄视频 | 欧美一区二区三区 | 国产成人精品一区二区三区 | 中文字幕在线视频网站 | 日韩精品视频在线观看一区二区 | 国产精品有限公司 | 成年人性视频 | 久久午夜综合久久 | 99中文字幕| 91高清视频| 成年人精品视频在线观看 | 国产亚洲成av人片在线观看桃 | 国产片网站 | 久草 在线 | 欧美日韩精品一区二区在线观看 |