java 枚举注释_Java 枚举和注解总结

Java 枚举和注解总结

枚举

没有枚举前我们基本上常量来定义值:

public interface Color{

public static final int GREEN = 0;

public static final int RED = 1;

....

....

....

}

如果有了枚举后我们会怎样了?

public enum Color{

GREEN,RED,BLACk,.......

}

代码是不是就清晰很多了?而且使用的时候输出的值我们是可以使用GREEN,是不是可以很明白的知道是什么颜色?

枚举的创建

枚举是继承自Enum,使用enum关键字。

枚举的使用场景

枚举适合在固定的常量下使用,比如四季,月份,星期;这种基本公认的而且不会有改变的场景下使用。

编译器中的枚举

编译器默认帮我们实现了很多枚举中的方法,比如equals(),hashCode(),toString,values(),valueOf(String)等。这些都是编译器帮我们做的。

枚举中的注意事项

不能使用static,final修饰枚举,因为它是隐式的final类型的;

因为是final类型,所以我们也就知道它是不能被继承的;

从Enum继承的clone是final类型的,枚举是不能重写clone方法的,并且Enum里面的clone方法直接抛出异常,所以enum是不能被clone的;

enum中的ordinal是强依赖于枚举实例的定义顺序的,所以用ordinal来做判断顺序是不推荐的,因为只要在非最后加入实例,那么就会改变整体的顺序;如果是需要顺序可以自定义属性。

注解

注解出现前

注解的作用我理解为就是用来约定一些数据定义,让我们可以在某个属性或者某个地方做个标记。在注解出现前能做这个的应该是XML,我们通常在xml中定义类或者属性的相关配置。而有了注解我们可以在代码中直接定义了。

注解的分类

定义注解的注解,元注解:@Rentation,@Target,@Document,@Inherited

jdk内置注解:@Override,@Deprecated...

自定义的注解

spring等外部注解

作用场景:

@Rentation:Source,Class,Runtime

作用目标域:

@Target:Construct,Field,Local_variable,method,package,paramter,type

注解的定义

注解的定义使用@interface关键字,并且使用元注解进行标注:

@Rentation(Rentation.Runtime)

@Target(ElementType.Field)

public @interface XxAnotation{

String values() default "";

}

注解属性

注解里面的属性只能使用以下6种类型来定义:

1. 所有的基本类型;

2. String

3. Class

4. enum

5. Annotation

6. 以上类型的数组类型

注解不允许使用基本类型的包装类来定义里面的注解属性。注解里面的属性都是使用方法的方式来定义的。有点类似接口方法。

注解的属性需要注意一下几点:

要么具有默认值,要么在使用注解的时候提供属性的值;

非基本类型的元素,默认值不能为null;

如果只有一个属性,那么可以设置为value,在使用注解的时候就可以直接赋值;@XxAnotation("ok")

ps:注解是不能继承的。

注解处理器

我们定义了注解,设置了元素值。那么就必须要有一个处理器来进行注解处理。这个可以看看之前的Java 特殊字段脱敏,我们可以使用反射来获取注解定义的值,然后进行业务处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值