Java注解:@IntDef 替换 Emum

枚举(Eeum)的缺点

每一个枚举值都是一个对象,在使用它时会增加额外的内存消耗,所以枚举相比与 Integer 和 String 会占用更多的内存。

较多的使用 Enum 会增加 DEX 文件的大小,会造成运行时更多的开销,使我们的应用需要更多的空间。

使用@IntDef代替枚举
public class IntDefClass {

    IntDefClass(){}

    private static final int one = 1;
    private static final int two = 2;

	//   @IntDef({one,two})  和下边的作用相同
    @IntDef({1,2})
    @Retention(RetentionPolicy.CLASS)
    public @interface status{ }
	
	//在类中使用@IntDef定义过的注解
    public void setData(@status int param){

    }
}
public class IntDefActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_int_def);
        initData();
    }

    private void initData() {
        IntDefClass intDefClass = new IntDefClass();
        intDefClass.setData(2);//作用在这里
    }
}

在调用setData时,会提示可入传的值,如果不是规定的值,也会提示错误,如下图
在这里插入图片描述
在这里插入图片描述
注解的生命周期分为:

  • 1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
  • 2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
  • 3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;

参考:https://www.cnblogs.com/a8457013/p/9965551.html
https://www.jianshu.com/p/c5267d1f9a52

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值