• Effective java -- 5 枚举和注解


    第三十条:用enum代替int常量
    enum的简单用法。

    enum Operation {
      PLUS("+") {
        double apply(double x, double y) {
          return x + y;
        }
      },
      MINUS("-") {
        double apply(double x, double y) {
          return x - y;
        }
      };
    
      private final String symbol;
    
      private Operation(String symbol) {
        this.symbol = symbol;
      }
    
      @Override
      public String toString() {
        return symbol.toString();
      }
    
      abstract double apply(double x, double y);
    }

    第三十一条:用实例域代替序数
    就是向上面那样将symbol换成一个int类型的值用于标记实例。

    第三十二条:用EnumSet代替位域(没用过位域,还不太懂)

    第三十三条:用EnumSet代替序数索引
    就是告诉别用ordinal()方法,这个基本上对于程序来说没有用。不要将ordernal的方法的返回值作为索引。
    EnumMap的用法

      public enum Phase {
        SOLID, LIQUID, GAS;
        public enum Transition {
          MELT(SOLID, LIQUID), FREEZE(LIQUID, SOLID), BOIL(LIQUID, GAS), CONDENSE(GAS, LIQUID);
    
          private final Phase src;
          private final Phase des;
    
          private Transition(Phase src, Phase des) {
            this.src = src;
            this.des = des;
          }
    
          private static final Map<Phase, Map<Phase, Transition>> MAP =
              new EnumMap<Phase, Map<Phase, Transition>>(Phase.class);
    
          static {
            for (Phase phase : Phase.values())
              MAP.put(phase, new EnumMap<Phase, Transition>(Phase.class));
    
            for (Transition transition : Transition.values()) {
              MAP.get(transition.src).put(transition.des, transition);
            }
          }
        }
      }

    和其他类型的map差不多,就是最后需要加上Key.class。

    第三十四条:用接口模拟可伸缩的枚举

    枚举间不可继承,但是枚举可实现接口。

    第三十五条:注解优于命名格式

    第三十六条:坚持使用Override注解

    第三十七条:用标记接口定义类型

  • 相关阅读:
    Linux部署golang程序(无数据库访问)
    MySQL备份数据库mysqldump
    Linux命令netstat
    SQL优化01(转载)
    springcloud之gateway点滴
    关于数据库错误:serverTimeZone
    代码重构的重要性
    关于集合的泛型
    python 视频下载神器(you-get)
    linux下ssh
  • 原文地址:https://www.cnblogs.com/badboyf/p/6291163.html
Copyright © 2020-2023  润新知