Android定义常量的三种方式

Class定义常量

public class Constant {

    public static final int SUNDAY = 0;
    public static final int MONDAY = 1;
    public static final int TUESDAY = 2;
    public static final int WEDNESDAY = 3;
    public static final int THURSDAY = 4;
    public static final int FRIDAY = 5;
    public static final int SATURDAY = 6;
}
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        printDay(Constant.FRIDAY);
    }

    private void printDay(int value){
        System.out.println(value);
    }
}

Enum定义常量

public class Constant {
    
    public enum WeekDays {
        SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
    }
}
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        printDay(Constant.WeekDays.FRIDAY);
    }

    private void printDay(Constant.WeekDays value){
        System.out.println(value);
    }
}

Annotation定义常量

public class Constant {

    @IntDef({
            WeekDays.SUNDAY,
            WeekDays.MONDAY,
            WeekDays.TUESDAY,
            WeekDays.WEDNESDAY,
            WeekDays.THURSDAY,
            WeekDays.FRIDAY,
            WeekDays.SATURDAY
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface WeekDays{

        int SUNDAY = 0;
        int MONDAY = 1;
        int TUESDAY = 2;
        int WEDNESDAY = 3;
        int THURSDAY = 4;
        int FRIDAY = 5;
        int SATURDAY = 6;
    }
}
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        printDay(Constant.WeekDays.FRIDAY);
    }

	//可以通过注解入参做非法输入值的校验
    private void printDay(@Constant.WeekDays int value){
        System.out.println(value);
    }
}

对比

  1. Enum定义常量相对于Class定义常量能够将常量进行分组;
  2. Annotation定义常量相比于Enum定义常量不仅可以通过@Retention注解使得注解在源文件有效,不参与编译消耗内存空间而且通过Android中的@IntDef注解还可做入参非法输入值的校验。

Tip

  1. switch下使用@IntDef注解的tip
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值