Java自定义注解@interface

自定义注解

步骤

第一步,用@interface定义注解:

在类中声明可以去掉public

public @interface Report {

}

第二步,元注释配置注解

@Target

最常用的元注解是@Target。使用@Target可以定义Annotation能够被应用于源码的哪些位置:

  • 类或接口:ElementType.TYPE
  • 字段:ElementType.FIELD
  • 方法:ElementType.METHOD
  • 构造方法:ElementType.CONSTRUCTOR
  • 方法参数:ElementType.PARAMETER
@Retention

@Retention定义Annotation的生命周期:

  • 仅编译期:RetentionPolicy.SOURCE
  • 仅class文件:RetentionPolicy.CLASS
  • 运行期:RetentionPolicy.RUNTIME
@Repeatable

使用@Repeatable这个元注解可以定义Annotation是否可重复  //不常用

@Inherited

使用@Inherited定义子类是否可继承父类定义的Annotation

@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)

必须设置@Target@Retention@Retention一般设置为RUNTIME,因为我们自定义的注解通常要求在运行期读取。一般情况下,不必写@Inherited@Repeatable

第三步,添加参数、默认值

参数类型+参数名()

有默认值可以不写参数,没有默认值必须给注解赋值,支持显式赋值

public class test () {
    @MyAnnotation(id = 2,name = "testAnnotation")
    public void test() {}
}
public @interface MyAnnotation {
    int id() default -1;
    String name() default "";
}

如果注解只有一个参数,参数名为value,赋值时可以不用写参数名

public class test () {
    @MyAnnotation("testAnnotation")
    public void test() {}
}

@interface MyAnnotation {
    String value() default "";
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值