java 注解解析_Java注解详解

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 package com.ljq.test;

2

3  import java.lang.annotation.ElementType;

4  import java.lang.annotation.Retention;

5  import java.lang.annotation.RetentionPolicy;

6  import java.lang.annotation.Target;

7

8  /**

9 * 定义一个注解

10 *

11 *

12 * @author jiqinlin

13 *

14 */

15  //Java中提供了四种元注解,专门负责注解其他的注解,分别如下

16

17  //@Retention元注解,表示需要在什么级别保存该注释信息(生命周期)。可选的RetentionPoicy参数包括:

18  //RetentionPolicy.SOURCE: 停留在java源文件,编译器被丢掉

19  //RetentionPolicy.CLASS:停留在class文件中,但会被VM丢弃(默认)

20  //RetentionPolicy.RUNTIME:内存中的字节码,VM将在运行时也保留注解,因此可以通过反射机制读取注解的信息

21

22  //@Target元注解,默认值为任何元素,表示该注解用于什么地方。可用的ElementType参数包括

23  //ElementType.CONSTRUCTOR: 构造器声明

24  //ElementType.FIELD: 成员变量、对象、属性(包括enum实例)

25  //ElementType.LOCAL_VARIABLE: 局部变量声明

26  //ElementType.METHOD: 方法声明

27  //ElementType.PACKAGE: 包声明

28  //ElementType.PARAMETER: 参数声明

29  //ElementType.TYPE: 类、接口(包括注解类型)或enum声明

30

31  //@Documented将注解包含在JavaDoc中

32

33  //@Inheried允许子类继承父类中的注解

34

35

36 @Retention(RetentionPolicy.RUNTIME)

37 @Target({ElementType.METHOD, ElementType.TYPE})

38  public @interface MyAnnotation {

39 //为注解添加属性

40   String color();

41 String value() default "我是林计钦"; //为属性提供默认值

42   int[] array() default {1, 2, 3};

43 Gender gender() default Gender.MAN; //添加一个枚举

44   MetaAnnotation metaAnnotation() default @MetaAnnotation(birthday="我的出身日期为1988-2-18");

45 //添加枚举属性

46

47 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值