枚举Enum

1.用Enum代替整数集

//不合理的定义类型

LinearLayout one = (LinearLayout) findViewById(R.id.linearlayout_test_1);
 one.setOrientation(2012);

//使用emun来定义

public class LinearLayout extends ViewGroup {
    private Orientation mOrientation;

    public enum Orientation {
        HORIZONTAL, VERTICAL
    };

    public void setOrientation(Orientation dir) {
        mOrientation = dir;
    }
}
1.Enum(枚举)使用起来也不比定义整数集繁琐,同样的可读。另外的优点就是,它的封装更好,最重要的是它会在编译时被检查。因为Java是一种Strong Type,也就是说在编译时,编译器会对所有原型类型和参数类型进行检查,如果类型不对,并且没有强制转型的,就会报出编译错误,当然编译器所支持的自动转型除外。比如一个需要int,而传的参数是long,虽然都差不多,没有溢出等,但还是会有编译错误

2.不可否认enums会使得代码更易读更安全,但是在编写高效Android代码时避免使用枚举,我们在很多经典的Java书已经看到推荐使用枚举来代替int常量了,但是在Android开发中我不建议使用枚举,特别是大型的App中,能不用则不用。因为它会牺牲执行的速度和并大幅增加文件体积。这也是性能优化中减少OOM的一个方面

3.在它被首次调用时,类会调用初始化方法来准备每个枚举变量。每个枚举项都会被声明成一个静态变量,并被赋值。然后将这些静态变量放在一个名为"$VALUES"的静态数组变量中。而这么一大堆代码,仅仅是为了使用j几个整数

 

posted @ 2017-07-01 18:29  让学习如呼吸一般自然  阅读(232)  评论(0编辑  收藏  举报