- 优先定义在枚举类中
public enum Constants {
TRUE(1),FALSE(2); // 每一个都是全局唯一的实例(单实例)
private int status;
private Constants(int status){
this.status = status;
}
public int getStatus() {
return status;
}
}
- 其次是常量类中,以 final 字段修饰 class 防止其被继承,并将其构造函数 private 化,防止被实例化。
public final class Constants {
private Constants() {}
public static final int TRUE = 1;
public static final int FALSE = 0;
}
- (不推荐)最后在接口中定义常量。
在《Effective Java》一书中表示过,因为接口可以被继承,常量内容会代入到实现类代码中。这样对于一个接口来说是不合理。
但可以适用于内部分组:在类内部使用接口,作为内部接口。更直观简洁。
public static final String EMAIL = "email";
public static final String USERNAME = "custNo";
public interface Role {
int ROLE_NORMAL = 0; // 普通用户
int ROLE_ADMIN = 1; // 管理员
}
工具类
- 工具类推荐使用spring的方式, 使用抽象类即可
public abstract class UUidUtils {
public static String generatedUUID16() {
return UUID.randomUUID().toString().replaceAll("-", "").substring(0, 16);
}
}