枚举Enum
Posted 让学习如呼吸般自然
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了枚举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几个整数
以上是关于枚举Enum的主要内容,如果未能解决你的问题,请参考以下文章
枚举类型 typedef enum....; enum....; 这两个的区别