枚举和注解

目录

枚举和注解

1.用enum代替int常量

在一些项目的代码中经常会看到用数字去表示不同类型的代码

// 例如,使用数字0, 1表示客户等级
public static final int NORMAL = 0;
public static final int VIP = 1;
// 或者用数字0, 1表示是和否等等...

这种方法称为int枚举模式, 此外还有这种模式的变体就是String枚举模式,用字母A, B, C等表示不同的类型.
这种方式虽然简单,但是缺少约束,例如下面的方法

// class XX
public void setCustomerLevel(int level) {
    
    
    this.level = level;
}

当客户端(调用者)使用这个方法进行复制的时候,因为方法只要求传入一个int类型的数据,所有就有可能传入除上面int枚举外其它的值

// 知道的人会传入写好的枚举, 这样还好
setCustomerLevel(XX.NORMAL);
// 如果不熟悉代码的人或者不知道有上面的int模式枚举定义
// 可能会像下面这样使用方法
setCustomerLevel(1);
setCustomerLevel(3); // 出现意外的类型

2.用实例字段代替序数

3.使用EnumSet而不是bit fields

4.使用EnumMap而非ordinal indexing

5.用接口模拟可扩展的枚举

6.注解优于命名模式(naming pattern)

7.坚持使用@Override注解

8.用标记接口定义类型

标记接口(marker interface),是没有包含方法声明的接口,而只是指明一个类实现了具有某种属性的接口.
常见的标记接口, Serializable, 通过实现这个接口表明这个类的实例可以被写到ObjectOutputStream(或者“被序列化”)

Guess you like

Origin blog.csdn.net/sunday2018/article/details/120096572