java中自定义annotation

简介:


一 自定义注解的语法很简单

public @interface MyAnnotation
{

}

上面的代码就定义了一个空注解,名字为MyAnnotation。

 

 


二 自定义注解也可以有属性

public @interface MyAnnotation
{
 public String key() default "name";
 public String value() default "xy";
}

若要策略为运行时注解,需加上Retention注解

@Retention(value = RetentionPolicy.RUNTIME)
public @interface MyAnnotation
{
 public String key() default "name";
        public String value() default "xy";
}

 


三 为使Annotation有意义,必须结合反射取得设置的内容,下面是一个完整的例子


MyAnnotation.java
package cn.interfaces;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(value = RetentionPolicy.RUNTIME)
public @interface MyAnnotation
{
 public String key() default "name";
 public String value() default "xy";
}

 

SimpleBean.java
package cn.bean;
import cn.interfaces.MyAnnotation;

public class SimpleBean
{
 @MyAnnotation(key = "name", value = "xy")
 public void save()
 {
  System.out.println("save");
 }
}

 

Test.java
package cn.test;
import java.io.IOException;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import cn.interfaces.MyAnnotation;

public class Test
{
 public static void main(String[] args) throws IOException, 
                                ClassNotFoundException, SecurityException, NoSuchMethodException
 {
  Class<?> c = Class.forName("cn.bean.SimpleBean");
  Method saveMethod = c.getMethod("save");
  Annotation an[] = saveMethod.getAnnotations(); // 取得全部的运行时Annotation
  for (Annotation a : an)
  {
   System.out.println(a);
  }

  if (saveMethod.isAnnotationPresent(MyAnnotation.class)) // 该方法上是否存在该种类型的注解
  {
   MyAnnotation ma = saveMethod.getAnnotation(MyAnnotation.class);
   String key = ma.key();
   String value = ma.value();
   System.out.println("key = " + key);
   System.out.println("value = " + value);
  }
 }
}

 

输出结果

@cn.interfaces.MyAnnotation(value=xy, key=name)
key = name
value = xy

 
结论

annotation和反射相结合会有很大的作用。

本文转自IT徐胖子的专栏博客51CTO博客,原文链接http://blog.51cto.com/woshixy/1002229如需转载请自行联系原作者


woshixuye111

相关文章
|
27天前
|
Java
让星星⭐月亮告诉你,自定义定时器和Java自带原生定时器
定时器是一种可以设置多个具有不同执行时间和间隔的任务的工具。本文介绍了定时器的基本概念、如何自定义实现一个定时器,以及Java原生定时器的使用方法,包括定义定时任务接口、实现任务、定义任务处理线程和使用Java的`Timer`与`TimerTask`类来管理和执行定时任务。
43 3
|
3月前
|
Java 应用服务中间件 Windows
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
|
4月前
|
Java
如何在Java中实现自定义注解和处理器
如何在Java中实现自定义注解和处理器
|
21天前
|
安全 Java
如何在 Java 中创建自定义安全管理器
在Java中创建自定义安全管理器需要继承SecurityManager类并重写其方法,以实现特定的安全策略。通过设置系统安全属性来启用自定义安全管理器,从而控制应用程序的访问权限和安全行为。
|
1月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
56 2
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
|
1月前
|
消息中间件 存储 Java
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
41 3
|
2月前
|
IDE Java 开发工具
java自定义异常20
java自定义异常20
27 3
|
2月前
|
Java 编译器 程序员
Java注解,元注解,自定义注解的使用
本文讲解了Java中注解的概念和作用,包括基本注解的用法(@Override, @Deprecated, @SuppressWarnings, @SafeVarargs, @FunctionalInterface),Java提供的元注解(@Retention, @Target, @Documented, @Inherited),以及如何自定义注解并通过反射获取注解信息。
Java注解,元注解,自定义注解的使用
|
1月前
|
算法 Java 测试技术
数据结构 —— Java自定义代码实现顺序表,包含测试用例以及ArrayList的使用以及相关算法题
文章详细介绍了如何用Java自定义实现一个顺序表类,包括插入、删除、获取数据元素、求数据个数等功能,并对顺序表进行了测试,最后还提及了Java中自带的顺序表实现类ArrayList。
18 0
|
3月前
|
搜索推荐 Java 开发者
Java异常处理新高度:自定义异常,打造个性化的错误管理体系!
Java异常处理新高度:自定义异常,打造个性化的错误管理体系!
76 1
下一篇
无影云桌面