Java 元注解


元注解

  • 元注解对其他注解类型进行注解;
  • java.lang.Annotation 包中提供了4个标准元注解:@Target @Retention @Documented @Inherited;

1. @Target

  • 指定注解所作用的程序元素的种类,若注解类型声明中存在 @Target,则编译器强制实施指定的类型限制,若不存在 @Target,则可以作用在任一程序元素上;

a. 取值

  • @Target 的取值是枚举类 ElementType 的成员(称为枚举常量):
枚举常量说明
ANNOTATION_TYPE注解泛型声明
CONSTRUCTOR构造方法声明
FIELD字段(包括枚举常量)声明
METHOD方法声明
PACKAGE包声明
PARAMETER参数声明
TYPE类、接口(包括注解类型)或枚举声明
LOCAL_VARIABLE局部变量声明
TYPE_PARAMETER参数声明
TYPE_USE用户类型声明

b. 定义

  • Target 的值包括 {} 表示它的值有多个,多个值之间用逗号隔开;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

@Target({ElementType.METHOD})
@interface Method {
}

c. 使用

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

@Target({ElementType.METHOD})
@interface Method {
}

public class Test {
    @Method //作用于方法上,正确
    void method() {
        System.out.println("here");
    }
}

2. @Retention

  • 指定需要在什么级别保留该注释信息,用于描述注解的生命周期,即被描述的注解在什么范围内有效;

a. 取值

  • @Retention 的取值是枚举类 RetentionPolicy 的成员;
枚举常量说明
CLASS在 class 文件中有效(即在 class 中保留)
RUNTIME在运行时有效(即在运行时保留)
SOURCE在源文件中有效(即在源文件中保留)

b. 使用

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.FIELD}) //指明注解Runtime作用于字段,大括号表示可以有多个值
@Retention(RetentionPolicy.RUNTIME) //指明Runtime在运行时保留,其值只能有一个,因此不用大括号
@interface Runtime {
}

3. @Documented

  • 指某一类型的注释通过 javadoc 和类似的默认工具进行文档化;

a. 使用

import java.lang.annotation.*;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented //指明注解Document被javadoc等工具文档化
@interface Document{}

4. @Inherited

  • 默认情况下,父类的注解是不会被子类继承的,只有使用元注解 @Inherited 的注解才可以被子类继承;

a. 定义

import java.lang.annotation.*;

@Inherited
@interface Inherite{
    String inher();
}

b. 使用

  • 父类使用Inherite注解,它的子类就会继承Inherite注解;
import java.lang.annotation.*;

@Inherited
@interface Inherite{
    String inher();
}
@Inherite(inher ="继承")
public class Test{
    public void method(){
        System.out.println("父类方法");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值