第一种:接口方式
public interface WeekInterface {
String SUNDAY = "SUNDAY";
String MONDAY = "MONDAY";
String TUESDAY = "TUESDAY";
String WEDNESDAY = "WEDNESDAY";
String THURSDAY = "THURSDAY";
String FRIDAY = "FRIDAY";
String SATURDAY = "SATURDAY";
}
接口的参数,默认是public static final类型的,使用方式 weekInferface.SUNDAY
第二种:定义public final型的静态变量 public static final
public class Weeks {
public static final String SUNDAY = "SUNDAY";
public static final String MONDAY = "MONDAY";
public static final String TUESDAY = "TUESDAY";
public static final String WEDNESDAY = "WEDNESDAY";
public static final String THURSDAY = "THURSDAY";
public static final String FRIDAY = "FRIDAY";
public static final String SATURDAY = "SATURDAY";
}
public class WeeksConstant {
private static final String SUNDAY = "SUNDAY";
private static final String MONDAY = "MONDAY";
private static final String TUESDAY = "TUESDAY";
private static final String WEDNESDAY = "WEDNESDAY";
private static final String THURSDAY = "THURSDAY";
private static final String FRIDAY = "FRIDAY";
private static final String SATURDAY = "SATURDAY";
public static String getSUNDAY() {
return SUNDAY;
}
public static String getSATURDAY() {
return SATURDAY;
}
public static String getFRIDAY() {
return FRIDAY;
}
public static String getTHURSDAY() {
return THURSDAY;
}
public static String getWEDNESDAY() {
return WEDNESDAY;
}
public static String getTUESDAY() {
return TUESDAY;
}
public static String getMONDAY() {
return MONDAY;
}
}
enum WeekEnum {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
第一种使用接口,接口的参数类型默认是static final型的,就可以通过接口直接调用,看似确实是个不错的方法。但我们该想想接口的使用场景,通常是为了定义一组行为,为接口的实现类定义行为约束,如果我们确定定义的参数不可改变,可以添加参数,但不能把接口作为我们定义静态常量的工具。所以不推荐单独拿来定义常量。
第二种直接定义public static final 直观明了,是大多数人能很快想到的,估计也是大多数人正在用的。
第二种可以通过构造方法进行改造,把每一个类作为静态变量,类中的提供不止一个参数。举例如下:
public class ResultCode {
public String code;
public String message;
private ResultCode(String code,String message){
this.code = code;
this.message = message;
}
public static final ResultCode SUCCESS = new ResultCode("S00000", "成功");
public static final ResultCode SYSTEM_ERROR = new ResultCode("E00001","系统错误");
}
第三种方法和第二种类似,只是通过方法取值。
第四种方法,使用枚举类型,适用于一类的固定结果的,通常是数据库的某个字段对应的几个具体结果。下拉框选项通常用枚举类实现,极力推荐这种方式。枚举也可以通过构造方法实现类似上面的多个参数。更多关于枚举的使用参考另一篇博客
第五红,说的更准确些应该叫配置信息,比如数据库的配置信息、数据库连接池等各种配置信息,用properties文件更易于理解。
以上是本人对于java中静态常量的理解,希望读者能给出好的意见、补充。