脚本宝典收集整理的这篇文章主要介绍了java自定义注解,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在我们编程过程中,会经常需要使用到注解,在使用sPRing进行应用构建的过程中会使用到非常多的spring注解。这篇就来谈一谈我们是如何去定义自己的注解在程序中进行使用的。
0x01 元注解
jdk1.8给我们提供了如下注解:
1.@Target 2.@Retention 3.@Documented 4.@InherITed 5.@Native 6.@RePEatable
上面这些类型都在jdk提供的java.lang.annotation包下,下面介绍两个常用的注解类:
一、Target:描述注解的作用范围,表示这个注解能用在什么什么地方。取值(ElementType)有:
1.CONSTRUCTOR:用于描述构造器 2.FIELD:用于描述域 3.LOCAL_VARIABLE:用于描述局部变量 4.METHOD:用于描述方法 5.PACKAGE:用于描述包 6.PARamETER:用于描述参数 7.TYPE:用于描述类、接口(包括注解类型) 或enum声明
上面的定义都在java.lang.annotation.ElementType类中。
二、Retention:描述注解的生命周期。取值有如下几个(定义在java.lang.annotation.Retentionpolicy中):
1.SOURCE:源文件 2.CLASS:class文件 3.RUNTIME:运行时
平时我们用的比较多的值是RUNTIME,注解在运行时生效。
0x02 自定义注解
@Documented @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.FIELD}) public @interface NotNull { public String value() default "1234"; }
上面是一个自定义的注解类,使用元注解来定义自定义注解,自定义注解的函数名就是参数名,函数返回类型是变量的类型。返回类型只能是基本类型、Class、Enum、String,可以通过default来声明参数的默认值。
下面来看下如何使用这个注解:
在类的定义中使用上面自定义的注解类:
public class TypeClass { @NotNull public int intType; public String s; @override public String toString() { return "TypeClass{" + "intType=" + intType + ", s='" + s + ''' + '}'; } }
使用上面定义的类:
TypeClass typeClass = new TypeClass(); Field[] fields = TypeClass.class.getDeclaredFields(); for (Field field : fields) { NotNull annotation = field.getAnnotation(NotNull.class); if(annotation != null) { System.out.println(field.getName() + " " +annotation); System.out.println("CFNotNull value: " + annotation.value()); } }
上面的示例中可以拿到TypeClass的所有字段,然后逐个去判断字段的注解,根据自己定义的注解去做不同的逻辑操作。
0x03 使用场景
1.开篇就提到了spring中我们会用到很多注解。
2.自定义注解来对字段进行一定的约束(如在通信的双方)。
3.对注解修饰的对象进行说明限制(比如mvc应用对权限进行集中控制)。
以上是脚本宝典为你收集整理的java自定义注解全部内容,希望文章能够帮你解决java自定义注解所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。