軟件工程實(shí)踐者

          統(tǒng)計(jì)

          留言簿

          友情鏈結(jié)

          閱讀排行榜

          評(píng)論排行榜

          2016年8月30日 #

          Java 8 Repeatable注解的使用

          Java 8之前,同一注解不能在相同的目標(biāo)元素上多次使用,例如,如下的注解在Java 8之前是不允許的:
          public class SampleClass {
              
              @Quality("Security")
              @Quality("Performance")
              @Quality("Readability")
              public void foo(){
                  //
              }
          }

          Java 8引入了Repeatable注解(@Repeatable)可以解決這一問題,但光有可重復(fù)的注解定義還不夠,還需要它的容器注解,兩者一起來實(shí)現(xiàn)可重復(fù)注解的使用。實(shí)例如下:
          @Target(ElementType.METHOD)
          @Retention(RetentionPolicy.SOURCE)
          @Repeatable (Qualities.class)
          public @interface Quality {
              String value();
          }
          @Target(ElementType.METHOD)
          public @interface Qualities {
              Quality[] value();
          }

          其中,Quality是可重復(fù)注解,由@Repeatable注解標(biāo)明,它的容器注解是Qualities,用于存放所有可重復(fù)的Quality(存貯在Quality[]中);同時(shí)還要注意可重復(fù)注解和它的容器注解的目標(biāo)元素必須是一樣的(這也不言自明)。如此這般,我們最開始的 SampleClass 在Java 8環(huán)境下就可以安全使用了。


          posted @ 2016-09-06 16:24 軟件工程實(shí)踐者 閱讀(836) | 評(píng)論 (0)編輯 收藏

          Bill Push的單例模式實(shí)現(xiàn)

          以下單例實(shí)現(xiàn)思想來自《Java Design Patterns: A Programmer's Approach》.
          該方法利用了Java缺省的Lazy類實(shí)例化機(jī)制克服了傳統(tǒng)單例模式實(shí)現(xiàn)中Lazy實(shí)例化方式的不足。

          public class Singleton {
             private Singleton(){}
             
             public static Singleton getInstance(){
                return Helper.instance;
             }

             static class Helper {
                 private static Singleton instance = new Singleton();
             }
          }

          posted @ 2016-09-03 09:37 軟件工程實(shí)踐者 閱讀(232) | 評(píng)論 (0)編輯 收藏

          Maven error “Failure to transfer…”

          以下轉(zhuǎn)自StackOverflow(http://stackoverflow.com/questions/5074063/maven-error-failure-to-transfer),親測(cè)可用。


          This worked for me in Windows as well.

          1. Locate the {user}/.m2/repository (Using Juno /Win7 here)
          2. In the Search field in upper right of window, type ".lastupdated". Windows will look through all subfolders for these files in the directory. (I did not look through cache.)
          3. Remove them by Right-click > Delete (I kept all of the lastupdated.properties).
          4. Then go back into Eclipse, Right-click on the project and select Maven > Update Project. I selected to "Force Update of Snapshots/Releases". Click Ok and the dependencies finally resolved correctly.

          posted @ 2016-09-02 15:52 軟件工程實(shí)踐者 閱讀(187) | 評(píng)論 (0)編輯 收藏

          Groovy:Invalid duplicate class definition of class....The type xxx is already defined..

          當(dāng)我們寫Groovy腳本代碼的時(shí)候,有時(shí)會(huì)發(fā)生編譯錯(cuò)誤,如下:

          - Groovy:Invalid duplicate class definition of class XXX : The source XXXX\XXX.groovy contains at least two 
          definitions of the class XXX.
          - The type XXX is already defined

          原因在于Groovy會(huì)把.groovy代碼文件作為腳本或類定義來處理,例如如下代碼:

          class Order {
              def security
              def value
              private buy_sell(su, closure) {
                  security = su[0]
                  quantity = su[1]
                  closure()
              }
              def getTo() {
                  this
              }
          }
          def methodMissing(String name, args) {
              order.metaClass.getMetaProperty(name).setProperty(order, args)
          }
          def getNewOrder() {
              order = new Order()
          }

          Integer.metaClass.getShares = { -> delegate }

          Groovy會(huì)把上述代碼作為腳本處理,同時(shí)缺省用文件名來作為一個(gè)外圍類類包括整個(gè)腳本程序,此時(shí),如果該文件名恰好也是Order的話,那么就會(huì)出現(xiàn)重復(fù)的類定義錯(cuò)誤提示。
          解決辦法是將腳本文件名取另外一個(gè)不同的名字。

          posted @ 2016-08-31 09:00 軟件工程實(shí)踐者 閱讀(1080) | 評(píng)論 (0)編輯 收藏

          OMG OCUP2考試通知

          已經(jīng)申請(qǐng)OCUP中級(jí)考試的學(xué)員可以在一年內(nèi)(截止到17年9月份)免費(fèi)申請(qǐng)OCUP2中級(jí)考試的資格(原有考試仍可以參加)。此外,2014年3月份之后參加了原有OCUP中級(jí)認(rèn)證考試的學(xué)員可以免費(fèi)申請(qǐng)OCUP2中級(jí)認(rèn)證考試。詳見OMG網(wǎng)站聲明(http://www.omg.org/ocup-2/exam-info.htm)。

          posted @ 2016-08-30 14:10 軟件工程實(shí)踐者 閱讀(298) | 評(píng)論 (0)編輯 收藏

          主站蜘蛛池模板: 遵义县| 通山县| 克山县| 奉节县| 平武县| 罗田县| 达日县| 五寨县| 遂平县| 黄陵县| 乐东| 阿尔山市| 长岛县| 德庆县| 潼南县| 健康| 南开区| 深水埗区| 五大连池市| 沈阳市| 分宜县| 安阳市| 莱西市| 黄浦区| 北辰区| 九龙坡区| 高唐县| 泰宁县| 台东市| 东平县| 巴里| 北川| 乌兰县| 兴国县| 千阳县| 星座| 溧阳市| 富平县| 多伦县| 金阳县| 贵德县|