Java的注解接口(Annotation Interfaces)

介绍

注解接口的声明:interface关键词前面加@符号

Java注解接口(Annotation Interfaces)是一种特别的接口。为了跟普通的接口区分开来,在关键词interface前面加上@。interface和@之间可以加空格,也可以不加空格,但不建议加。

注解接口的元素

  • 在注解内部可以定义函数声明,每个函数声明是注解的一个元素(element )。
  • 注解接口内部除了这些显式声明的函数外,没有其它元素。
  • 函数声明不能包含参数。
  • 函数声明不能有throws子句。
  • 函数声明不能被private, default, 或者 static修饰。
  • 按照惯例,唯一可以修饰函数声明的是注解。
  • 函数声明的返回类型必须是下面之一:一个原始类型(primitive type)、String、或者Class、或者一个枚举类型、或者一个注解接口类型、或者一个数组,其中数组的元素是上面的类型之一。
  • 如果注解接口内没有任何元素,称为标记注解接口(marker annotation interface)
  • 如果注解接口内只有一个元素,称为单元素注解接口(single-element annotation interface)。按照惯例,该唯一元素命名为value。
  • 注解接口元素可以包含默认值,语法是在函数声明后面跟default 关键字,后面再跟值

举例

注解接口中包含了两个函数声明

package com.thb;

import static java.lang.annotation.ElementType.TYPE;

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

@Retention(value = RetentionPolicy.RUNTIME)
@Target(TYPE)
public @interface Person {

    String name();
    int age();
}

注解接口的函数声明返回Class类型

package com.thb;

import static java.lang.annotation.ElementType.TYPE;

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

@Retention(value = RetentionPolicy.RUNTIME)
@Target(TYPE)
public @interface Person {

    Class<?> date();
}

注解接口内没有包含元素:标记注解接口

package com.thb;

import static java.lang.annotation.ElementType.TYPE;

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

@Retention(value = RetentionPolicy.RUNTIME)
@Target(TYPE)
public @interface Person {

}

注解接口内只有一个元素:单元素注解接口

package com.thb;

import static java.lang.annotation.ElementType.TYPE;

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

@Retention(value = RetentionPolicy.RUNTIME)
@Target(TYPE)
public @interface Person {
    String value();
}

注解接口的元素声明默认值

package com.thb;

import static java.lang.annotation.ElementType.TYPE;

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

@Retention(value = RetentionPolicy.RUNTIME)
@Target(TYPE)
public @interface Person {
    String value() default "";
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 中自定义注解接口的实现是为了提供一种元数据的形式,用于在编译时或运行时对代码进行标记和定制。以下是如何创建和使用自定义注解的步骤: 1. **定义注解接口**: 创建一个新的注解接口,通常使用 `@interface` 关键字,例如: ```java @Retention(RetentionPolicy.RUNTIME) public @interface MyCustomAnnotation { String value() default ""; int param() default 0; boolean flag() default false; } ``` 这里定义了一个名为 `MyCustomAnnotation` 的注解,它有三个属性:`value`、`param` 和 `flag`。 2. **在类上应用注解**: 在类、方法、变量等上使用 `@MyCustomAnnotation` 标记,例如: ```java @MyCustomAnnotation(value = "customValue", param = 123, flag = true) public class MyClass { // ... } ``` 3. **处理注解**: - 如果在编译期间(`RetentionPolicy.SOURCE` 或 ` RetentionPolicy.CLASS`),可以使用 `javac` 编译器插件访问注解信息。 - 如果在运行期间(`RetentionPolicy.RUNTIME`),可以使用反射 API(如 `java.lang.reflect.Annotation`)获取和处理注解。 4. **编写注解处理器**(可选): 如果你想在编译期间做更多的处理,可以创建一个注解处理器类,实现 `javax.annotation.processing.Processor` 接口。这个处理器会在编译时被调用,处理你定义的注解。 相关问题: 1. 如何查看Java源码中的注解信息? 2. 注解处理器的主要用途是什么? 3. 如何在运行时动态获取类上的自定义注解

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值