常量定义在接口还是类中?

本文探讨了在Java中定义常量的三种方式:枚举、常量类和接口。枚举提供全局唯一的实例,适合状态有限的场景。常量类通过final字段和私有构造函数确保不可实例化,适合定义一组相关常量。接口定义常量虽然不推荐,但在内部接口中仍有一定适用性。同时,文章提到了工具类的创建,建议使用抽象类如`UuidUtils`来提供静态方法。
摘要由CSDN通过智能技术生成
  1. 优先定义在枚举类中
public enum Constants {
    TRUE(1),FALSE(2); // 每一个都是全局唯一的实例(单实例)
    private int status;
    private Constants(int status){
        this.status = status;
    }
    public int getStatus() {
        return status;
    }
}
  1. 其次是常量类中,以 final 字段修饰 class 防止其被继承,并将其构造函数 private 化,防止被实例化。
public final class Constants {
	private Constants() {}
	public static final int TRUE = 1;
	public static final int FALSE = 0;
}
  1. (不推荐)最后在接口中定义常量。

在《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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值