美文网首页
Android开发笔记(5):常量的合理使用

Android开发笔记(5):常量的合理使用

作者: 叶满林 | 来源:发表于2021-01-28 17:30 被阅读0次

    今天,我们来聊一些“细枝末节”的问题——java中的常量。觉得很有意思,给大家分享一下:

    下面是我见过的几种常量定义操作:
    1.普通款:

    public class Constants {
        private Constants(){}
        public static final int MAX = Integer.MAX_VALU;//最大值
        public static final int MIN = Integer.MIN_VALU;//最小值
    }
    

    最简单的一种,需要定义成final且定义一个private的构造方法,这样做是为了不让其他类继承,禁止实例化此类,调用时直接以"类.常量"的方式调用。
    当然,大部分时候,我们都放在相关的类里,而不是单独抽取出来。

    2.接口

    public interface Constants {
        int MAX = Integer.MAX_VALUE;//最大值
        int MIN = Integer.MIN_VALU;//最小值
    }
    

    接口中定义,接口中的"变量"默认都是 "public static final"类型,即为常量,因此接口可以省略。

    3.枚举款(这个详细说一下)
    假设服务端下发了一个“tag”字段,1代表通过,2代表不通过,3代表延期审核。枚举可以这样用:

    public enum Constants {
        PASS(1),NOPASS(2),DELAY(3);
        
        private final int state;
        
        Constants(int state){
            this.state = state;
        }
        
        public int getstate() {
            return state;
        }
    }
    //使用
    ...
    if (getUserState() == Constants.PASS.getstate()) {
        //此人审核未通过
    } 
    

    他的优点有啥呢?
    (1)枚举常量更简单
    枚举只需要定义每个枚举项,不需要定义枚举值。
    (2)枚举常量属于稳态型
    以上面的代码举例:得到数据以后getUserState(),普通常量,你需要判断边界值,比如获取的值为-1就会出现很多问题。而枚举只能是其中一个实例。
    (3)扩展性强
    有一天产品告诉你,现在需要根据状态相应颜色,分别是“红色”、“蓝色”、“白色”。
    那么只要稍微改一下代码就完事了。

    public enum Constants {
        PASS(1,Colors.red),NOPASS(2,Colors.buld),DELAY(3,,Colors.red);
        
        private final int state;
        private final int color;
        
        Constants(int state,int color){
            this.state = state;
            this.color =cor
        }
        
        public int getcolor() {
            return color;
        }
    }
    

    方法实现接口,demo(@Contract.Type int action) 用注解标明方法使用常量,增加了常量与方法的关联感

    (4)注解款

      @IntDef({SELECT_ACHIEVEMENT, SELECT_TASK, SELECT_MEMBER, SELECT_BUY})
        @Retention(RetentionPolicy.SOURCE)
        @interface SelectBuyType {
        }
    

    相关文章

      网友评论

          本文标题:Android开发笔记(5):常量的合理使用

          本文链接:https://www.haomeiwen.com/subject/rzrxtltx.html