Java注解(1):自定义注解、元注解

一、自定义注解:

	@Target(value=ElementType.TYPE)
	@Retention(RetentionPolicy.RUNTIME)
	public @interface MyAnnotation{
	    Stirng studentName() default "";
	    int age() default 0;
	    //若default的值为-1表示不存在
	    int id() default -1;
	    //数组可以不用设置默认值
	     String[]  names() default {"dsv","dd"};
	}
	//使用上面的注解
	public class Demo{
	    
	    @MyAnnotation(age=19,studentName="pengpeng")    //添加参数值
	    public void test(){
	        
	    }
	}

二、自定义的注解通常要添加一些元注解,元注解有四种。

(1)@Target:用于描述注解的范围(@Target(value=ElementType.TYPE)或者@Target(value={ElementType.METHOD,ELementType.TYPE})

所修饰的范围取值ElementType
package包PACKAGE(只能用在包的前面)
类、接口、枚举、Annotation类型TYPE
类型成员(方法、构造方法、成员变量、枚举值)CONSTRUCTOR用于描述 构造器 、FILED用于描述域、METHOD用于描述方法
方法参数和本地变量LOCAL_VARIABLE用于描述局部变量;PARAMETER用于描述参数

(2)@Retention:表示需要在什么级别保存该注释信息,用于描述注解的生命周期。(@Retention(RetentionPolicy.RUNTIME)

取值RetentionPolicy作用
SOURCE在源文件中有效(即源文件保留)
CLASS在class文件中有效
RUNTIME在运行时有效(即运行时保留)为RUNTIME可以为反射机制读取

(3)@Documented:用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。Documented是一个标记注解,没有成员。

(4)@Inherited:@Inherited 元注解是一个标记注解,@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coder鹏鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值