在本教程中,我们将演示在java中创建自定义注解的示例。 以下是创建,使用和测试自定义注解的步骤。

创建自定义注解

使用@interface后跟注解名称创建自定义注解。 请参阅以下示例。

文件:HelloAnnotation.java -

package com.yiibai.tutorial.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
 * @author yiibai
 *
 */

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Inherited
public @interface HelloAnnotation {
     String value();
}
  • @Retention - 保留策略确定放弃注解的位置。
  • @Documented - 标记另一个注解以包含在文档中。
  • @Target - 指示注解类型适用的程序元素的种类。
  • @Inherited - 标记要继承到带注解类的子类的另一个注解(默认情况下,注解不会继承到子类)。

使用自定义注释

这是一个示例,其方法使用@HelloAnnotation进行注释。

package com.yiibai.tutorial.annotation;
/**
 * @author yiibai
 *
 */
public class HelloAnnotationClient {

    @HelloAnnotation(value="Simple custom  Annotation example")
    public void sayHello(){
        System.out.println("Inside sayHello method..");
    }
}

测试自定义注释

以下是使用Reflection API测试自定义注释的示例。

文件:HelloAnnotationTest.java -

package com.yiibai.tutorial.annotation;

import java.lang.reflect.Method;
/**
 * @author yiibai
 *
 */
public class HelloAnnotationTest {
    public static void main(String[] args) throws Exception {
        HelloAnnotationClient helloAnnotationClient=new HelloAnnotationClient();

        Method method=helloAnnotationClient.getClass().getMethod("sayHello");
        if(method.isAnnotationPresent(HelloAnnotation.class)){
            HelloAnnotation helloAnnotation=method.getAnnotation(HelloAnnotation.class);

            //Get value of custom annotation
            System.out.println("Value : "+helloAnnotation.value());

            //Invoke sayHello method
            method.invoke(helloAnnotationClient);
        }

    }
}

执行上面代码得到以下结果:

Value : Simple custom  Annotation example
Inside sayHello method..