关于常量是使用常量类或者常量接口,还是使用枚举,有什么区别?

关于常量,比如审核状态,1代表审核通过,2代表审核不通过


第一种使用接口:

public interface Constants{
    public static final int AUDIT_STATUS_PASS = 1;
    public static final int AUDIT_STATUS_NOT_PASS = 2;
 }

第二种使用类:

public class Constans{
    public static final int AUDIT_STATUS_PASS = 1;
    public static final int AUDIT_STATUS_NOT_PASS = 2;
}

第三种使用枚举:

public enum Constants {
    AUDIT_STATUS_PASS(1),
    AUDIT_STATUS_NOT_PASS(2);
    
    private int status;
    
    private Constants(int status){
        this.setStatus(status);
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }
        
}

这三种方法有什么区别吗?在实际运用中应该使用什么定义常量更好?

拉丁的传说
浏览 676回答 5
5回答

繁星点点滴滴

第一种和第二种是一样的,第一种写起来更方便,不用public static final,直接int AUDIT_STATUS_PASS = 1就行。第三种好在能把说明也写在里面,比如 public enum Constants { AUDIT_STATUS_PASS(1,"通过"), AUDIT_STATUS_NOT_PASS(2,"退回"); private int status; private String desc; private Constants(int status,String desc){ this.setStatus(status); this.desc = desc; } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } ... }

慕盖茨4494581

建议使用枚举。《Effective Java》中也是推荐使用枚举代替int常量的。

慕姐4208626

实际开发中都是使用枚举,因为耦合更小,更纯粹。参考:StackOverFlow

LEATH

枚举当然是首选,另如果不用枚举,在《Effective Java》一书中,作者建议使用一般类加私有构造方法的方式,至于为什么不用接口,那就要上升到语言哲学问题了。 public class Constants { private Constants() {} public static final int AUDIT_STATUS_PASS = 1; public static final int AUDIT_STATUS_NOT_PASS = 2; }

精慕HU

有个不太懂的地方,就是你问题中提供到的枚举类代码中为什么还要提供属性的set方法呢?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java