在本教程中,我们将演示在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..