自定义注解

参照@SuppressWarnings去定义就可以了
@interface就是一个固定的结构,和interface没有任何关系,注解需要用它来进行声明
1.注解声明为@interface
@SuppressWarnings中有一个东西String[] value();这个东西不是方法,是属性
Annotation 的成员变量在 Annotation 定义中以无参数方法的形式来声明。其方法名和返回值定义了该成员的名字和类型。我们称为配置参数。类型只能是八种基本数据类型、String类型、Class类型、enum类型、Annotation类型以及以上所有类型的数组。
自定义注解的重心不在定义,而在于怎么使用
没有成员定义的 Annotation 称为标记,比如说@Override; 包含成员变量的 Annotation 称为元数据 Annotation
2.内部定义成员,通常使用value表示
3.可以指定成员的默认值,使用default来进行定义
4.如果自定义的注解没有成员,表明是一个标识作用,类似于一些接口中没有抽象方法,什么也没有
比如Serializable接口,这种接口叫做标识接口,起到标识的作用
如果注解有成员,则在使用注解时,需要指明成员的值(除非有默认值)

public @interface MyAnnotation {

    String value();
}

@MyAnnotation(value="hello")//MyAnnotation里面有一个成员变量叫做value,必须要为它指定一个值,否则报错
    //有成员变量的注解必须要对成员变量进行赋值,否则报错
class Person{
    private String name;
    private int age;

    public Person() {

    }

也可以在MyAnnotation中使用default指定默认值

public @interface MyAnnotation {

    String value() default "hello";
}

然后就可以这么写,不会报错

@MyAnnotation()

class Person{
    private String name;
    private int age;

    public Person() {

    }

此时的value有值,只不过是默认值,如果不想用默认值,可以进行修改

@MyAnnotation(value="hi")//写成这样也可以MyAnnotation("hi"),因为本身只有一个成员
class Person{
    private String name;
    private int age;

    public Person() {

    }

定义完注解以后,就可以去使用了,比如构造器的上方可以加注解
因为已经有了默认值所以@MyAnnotation()也可以写成@MyAnnotation
在Person类上加了注解,利用反射去读这个注解,再读注解中成员的值得出想要做什么,然后做相应的操作
自定义注解必须配上注解的信息处理流程(使用反射)才有意义

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值