軟件工程實踐者

          統計

          留言簿

          友情鏈結

          閱讀排行榜

          評論排行榜

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

          主站蜘蛛池模板: 万盛区| 界首市| 福建省| 梅州市| 汕头市| 安庆市| 玉林市| 互助| 神农架林区| 玛纳斯县| 庆云县| 汕尾市| 广安市| 临城县| 奉贤区| 滦南县| 宜兰县| 靖远县| 萨嘎县| 湘乡市| 永丰县| 太湖县| 满洲里市| 达拉特旗| 正宁县| 永安市| 迭部县| 微山县| 泾源县| 金寨县| 大新县| 关岭| 保康县| 鹤庆县| 滦南县| 大丰市| 宁国市| 邵东县| 布拖县| 蕉岭县| 大冶市|