軟件工程實踐者

          統計

          留言簿

          友情鏈結

          閱讀排行榜

          評論排行榜

          2016年9月3日 #

          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)編輯 收藏

          主站蜘蛛池模板: 新沂市| 读书| 宁津县| 房产| 河北省| 信宜市| 汉中市| 鸡东县| 内黄县| 绍兴县| 电白县| 襄汾县| 琼结县| 兰坪| 当涂县| 大名县| 灌阳县| 上蔡县| 崇义县| 德庆县| 瑞安市| 丰城市| 曲周县| 永川市| 京山县| 石景山区| 时尚| 八宿县| 湖北省| 广昌县| 蓬莱市| 昂仁县| 揭西县| 泾源县| 新邵县| 龙山县| 南昌县| 凤阳县| 即墨市| 清远市| 通城县|