<source id="4vppl"><ins id="4vppl"></ins></source>
<u id="4vppl"><sub id="4vppl"><label id="4vppl"></label></sub></u>
<object id="4vppl"></object>
  • <u id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></u>

    <object id="4vppl"></object>
    <b id="4vppl"><sub id="4vppl"><tr id="4vppl"></tr></sub></b>

      <i id="4vppl"><thead id="4vppl"></thead></i>

      <thead id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></thead>

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

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

      安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
      国产午夜福三级在线播放_亚洲精品成a人片在线观看_亚洲自慰一区二区三区_久久棈精品久久久久久噜噜
      <source id="4vppl"><ins id="4vppl"></ins></source>
      <u id="4vppl"><sub id="4vppl"><label id="4vppl"></label></sub></u>
      <object id="4vppl"></object>
    1. <u id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></u>

      <object id="4vppl"></object>
      <b id="4vppl"><sub id="4vppl"><tr id="4vppl"></tr></sub></b>

        <i id="4vppl"><thead id="4vppl"></thead></i>

        <thead id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></thead>
        在线看欧美十八禁网站 | 日本乱中文字幕系列在线看 | 亚洲一区二区精品久久AV | 亚洲Av一级在线播放 | 思思99热综合在线观看 | 日本中文字幕在线观看全 |