元注解与自定义注解

元注解是用于注解其他注解的注解,包括@Target、@Retention和@Documented等,它们定义了注解的使用范围、生存周期和是否包含在API文档中。@Target指定了注解可以应用的程序元素类型,@Retention控制注解的生命周期,@Documented则决定注解是否出现在生成的Javadoc中。文章还介绍了自定义注解的格式和使用示例,包括注解的数据类型和默认值。
摘要由CSDN通过智能技术生成

一、元注解

什么是元注解?

在自定义注解时,需要使用的注解叫元注解,使用在注解上的注解就是元注解。

常用的元注解有:

  1. @Target
  2. @Retention
  3. @Documented

1. @Target

自定义注解时规定该注解的适用范围,不设置默认所有范围都可以使用

有如下范围:

ElementType.TYPE (可以使用在类上)
ElementType.FIELD, (可以给属性进行注解)
ElementType. METHOD, (可以给方法进行注解)
ElementType. PARAMETER, (可以给一个方法内的参数进行注解)
ElementType.CONSTRUCTOR, (可以给构造方法进行注解)
ElementType.LOCAL_VARIABLE, (可以给局部变量进行注解)
ElementType.ANNOTATION_TYPE, (可以给一个注解进行注解)
ElementType.PACKAGE, (可以给一个包进行注解)

jdk1.8新特性:
ElementType.TYPE_PARAMETER, (可以使用在自定义类型参数,如枚举)
ElementType.TYPE_USE (可以使用在使用类型的任意语句中)

一般常用:

  1. TYPE,可以使用在类上
  2. FIELD,使用在属性上
  3. METHOD,使用方法上
  4. PARAMETER, 使用在方法参数上
  5. CONSTRUCTOR, 使用在构造方法上

2.@Retention

自定义注解时规定该注解什么时候生效 不设置默认在源码时生效

有如下种类:

RetentionPolicy.SOURCE: 源码时有效
RetentionPolicy.CLASS: 字节码时
RetentionPolicy.RUNTIME: 运行时有效。【采用的最多】

3.@Documented

自定义注解时该注解在生成API文档时可以存在

生成API文档:

在这里插入图片描述

二、自定义注解

如何自定义注解

在这里插入图片描述

注解格式

@interface 注解名{
​ 数据类型 属性名();
}

注解内可以使用的数据类型有:

  1. 基本数据类型,
  2. 字符串类型,
  3. 枚举类型,
  4. 注解类型,
  5. 以及上面这些类型的数组类型。
package demo1;

import kejian2.aaa.MyEnum;
import kejian2.bbb.My;

import java.lang.annotation.*;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Myzhujie {
    int age();//基本数据类型
    String name();//字符串类型
    MyEnum address();//枚举类型
    My my();//注解类型
    int[] ages();
    String[] names() default {"world"};
    MyEnum[] address2();
    My[] mys();
}

如果属性定义好后,在使用该注解是需要指定属性的值

package demo1;

import kejian2.bbb.My;

//如果属性为数组类型,给数组类型赋值时如果只有一个值那么可以省略{}
//如果该注解中只使用value属性,那么value属性名可以省略。
@Myzhujie(age = 18, name = "阿娇", address = MyEnum.dongjing,
        my = @My, ages = {18, 20, 22}, names = "aaa",
        address2 = {MyEnum.dongjing, MyEnum.dongguan}, mys = @My)
public class Text {
    public void show() {
        System.out.println("你好!");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值