Effective Java 学习笔记——第六章(未完待续)

来源:互联网 发布:php文件上传目录 编辑:程序博客网 时间:2024/06/15 19:07

第30条 用enum代替int常量

1. enum与int枚举对比

古老的int枚举:

public static final int APPLE_FUJI = 0;  public static final int APPLE_PIPPIN = 0;  public static final int APPLE_GRANNY_SMITH = 0;  public static final int ORANGE_FUJI = 0;  public static final int ORANGE_PIPPIN = 0;  public static final int ORANGE_GRANNY_SMITH = 0;  

enum枚举:

public enum Apple{FUJI,PIPPIN,GRANNY_SMITH};public enum Orange{FUJI,PIPPIN,GRANNY_SMITH};

enum枚举较之于int枚举的优势:

  1. 语义化,简洁
  2. 类型安全(当需要传入Apple类型时,enum可以在编译时期检查是否传的正确,而int枚举不可以)
  3. enum可以有自己的方法与构造器(构造器私有),更加灵活,功能更强大

2. enum枚举的特点

  1. 每个枚举常量相当于有static final修饰;
  2. 枚举类的构造器为private,外界无法创建其实例(但可以调用其内部唯一常量,作为单例模式);
  3. 编译时期类型安全

3. enum枚举实例

public enum EnumTest {    RED("red", 1), GREEN("green", 2), BLUE("blue", 3);    private String name;    private int num;    EnumTest(String name, int num) {        this.name = name;        this.num = num;    }    public String getName() {        return name;    }    public int getNum() {        return num;    }}

4. 特定于常量的方法实现(即对方法枚举)

public enum Operation{    PLUS{double apply(double x,double y) {return x+y;}},    MINUS{double apply(double x,double y) {return x-y;}};    abstract double apply(double x,double y);}实质是对方法的枚举,使用时为Operation.PLUS.apply(x,y)。注意enum的前缀仍为static final。每个枚举常量都要继承apply抽象方法。



第31条 用实例域代替序数

每个枚举常量在枚举表中的位置可用ordinal()函数获取。但不建议使用该方法,因为一旦枚举常量在枚举表中的位置改变,ordinal()获取的位置也会发生改变(除非你是真的只想获取它的位置)。

建议使用如

public enum Test{    A(1),B(2);     private int location;    Test(int location){        this.location=location;    }    public int getLocation(){        return location;    }}

便于以后的修改与扩展。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 万能胶水沾到手上怎么办 圆领体恤领口容易皱怎么办 上衣剪了个洞怎么办 上衣破了个洞怎么办 鸟屎腐蚀车漆怎么办 毛风衣叠久了怎么办 黑色的衣服沾毛怎么办 雪纺裙子弄上油怎么办 内衣买小了怎么办妙招 长裤衬衫裙邹了怎么办 100棉衬衣皱了怎么办? 短袖t恤袖口大了怎么办 短袖底下卷边了怎么办 棉质短袖衫缩水怎么办 纯棉t恤缩水了怎么办 t恤缩水变小了怎么办 衣服掉在雨棚上怎么办 车衣密码锁忘记密码怎么办 衣服的铁拉链弯怎么办 去旅行衣服皱了怎么办 衣服抽绳出来了怎么办 裤子的绑带掉了怎么办 网纱裙的边卷了怎么办 堵奶宝宝吸不通怎么办 棉麻裙子掉毛怎么办 10个月宝宝吃手怎么办 婴儿连体衣长了怎么办 冰丝面料变长了怎么办 t恤袖口大了怎么办 长袖t恤袖子长了怎么办 机打的扣子掉了怎么办 四个月宝宝头扁怎么办 鞋子前面穿翘了怎么办 休完产假没人带怎么办 休完产假孩子吃奶怎么办 巴布豆童鞋里面臭了到底怎么办 连体裤有点卡档怎么办 宝宝连体衣扣子掉了怎么办 买衣服被骂了怎么办? 把人车刮了跑了怎么办 打工打不下去了怎么办