<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    軟件工程實踐者

    統計

    留言簿

    友情鏈結

    閱讀排行榜

    評論排行榜

    2016年8月31日 #

    Java 8 Repeatable注解的使用

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

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

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


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

    Bill Push的單例模式實現

    以下單例實現思想來自《Java Design Patterns: A Programmer's Approach》.
    該方法利用了Java缺省的Lazy類實例化機制克服了傳統單例模式實現中Lazy實例化方式的不足。

    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 軟件工程實踐者 閱讀(227) | 評論 (0)編輯 收藏

    Maven error “Failure to transfer…”

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


    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 軟件工程實踐者 閱讀(179) | 評論 (0)編輯 收藏

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

    當我們寫Groovy腳本代碼的時候,有時會發生編譯錯誤,如下:

    - 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會把.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會把上述代碼作為腳本處理,同時缺省用文件名來作為一個外圍類類包括整個腳本程序,此時,如果該文件名恰好也是Order的話,那么就會出現重復的類定義錯誤提示。
    解決辦法是將腳本文件名取另外一個不同的名字。

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

    主站蜘蛛池模板: 免费国产成人午夜电影| 最近免费中文字幕大全免费| 最近的免费中文字幕视频| 亚洲国产香蕉碰碰人人| XXX2高清在线观看免费视频| 久久久久亚洲精品中文字幕| 一区二区免费国产在线观看| 亚洲一区二区三区在线播放| 一级毛片人与动免费观看| 亚洲无码日韩精品第一页| xxxxxx日本处大片免费看| 国产成人亚洲综合无码| 国产V片在线播放免费无码| 久久久久国产成人精品亚洲午夜| 日韩在线视频免费| 国产亚洲精品激情都市| 日本人成在线视频免费播放| 亚洲爆乳无码专区| 1000部拍拍拍18勿入免费视频下载 | 国产精品冒白浆免费视频| 亚洲av无码偷拍在线观看| 亚洲精品动漫人成3d在线| 国产一级黄片儿免费看| 亚洲影院在线观看| 成年女人免费视频播放体验区| 爱情岛亚洲论坛在线观看| 亚洲日韩一页精品发布| 91视频免费网址| 亚洲AV永久无码天堂影院| 亚洲国产一区视频| 亚洲国产精品免费视频| 色噜噜亚洲男人的天堂| 亚洲高清最新av网站| 未满十八18禁止免费无码网站| 亚洲人成免费网站| 亚洲国产精品综合久久一线 | 国产成人精品亚洲| 精品久久久久久亚洲| 可以免费看的卡一卡二| 午夜免费国产体验区免费的| 日韩精品亚洲人成在线观看|