博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java注解(二)
阅读量:5950 次
发布时间:2019-06-19

本文共 1952 字,大约阅读时间需要 6 分钟。

前面了解了注解的,这次来看一下自定义注解。

自定义注解其实很简单,直接上代码:

import java.lang.annotation.Documented;import java.lang.annotation.Inherited;import java.lang.annotation.Retention;import java.lang.annotation.Target;import java.lang.annotation.ElementType;import java.lang.annotation.RetentionPolicy;@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited/* * 定义注解 Test * 注解中含有两个元素 id 和 description * description 元素 有默认值 "hello anntation" */public @interface Test {    public int id();    public String description() default "hello annotation";}

 根据对元注解的解释,我们知道:

  1. 这个注解可以用于方法
  2. JVM运行期间该注解都有效
  3. 该注解包含在 javadoc 中
  4. 该注解允许子类继承

 下面看下通过注解我们能取到什么

public class TestMain {      /*      * 被注解的三个方法      */      @Test(id = 1, description = "hello methodA")      public void methodA() {      }        @Test(id = 2)      public void methodB() {      }        @Test(id = 3, description = "last method")      public void methodC() {      }        /*      * 解析注解,将类被注解方法 的信息打印出来      */      public static void main(String[] args) {          Method[] methods = TestMain.class.getDeclaredMethods();          for (Method method : methods) {              /*              * 判断方法中是否有指定注解类型的注解              */              boolean hasAnnotation = method.isAnnotationPresent(Test.class);              if (hasAnnotation) {                  /*                  * 根据注解类型返回方法的指定类型注解                  */                  Test annotation = method.getAnnotation(Test.class);                  System.out.println("Test( method = " + method.getName() + " , id = " + annotation.id()                         + " , description = " + annotation.description() + " )");            }          }      }  }

 上面的Demo打印的结果如下:

Test( method = methodA , id = 1 , description = hello methodA )Test( method = methodB , id = 2 , description = hello annotation )Test( method = methodC , id = 3 , description = last method )

 上例其实也说明了,我们一般通过反射来取RUNTIME保留策略的注解信息。

 

 

 

转载于:https://www.cnblogs.com/yejg1212/p/3188751.html

你可能感兴趣的文章
struts2使用json需要注意的问题
查看>>
gitlab runner 优化
查看>>
快速添加百度网盘文件到Aria2 猴油脚本
查看>>
mac 无法登录mysql的解决办法
查看>>
Shiro权限判断异常之命名导致的subject.isPermitted 异常
查看>>
Hello world travels in cpp - 字符串(2)
查看>>
struts2自定义拦截器
查看>>
Eclipse安装adt插件后之后看不到andorid manger
查看>>
Kafka服务端脚本详解(1)一topics
查看>>
Zookeeper 集群安装配置,超详细,速度收藏!
查看>>
js中var self=this的解释
查看>>
js--字符串reverse
查看>>
面试题
查看>>
Facebook 接入之获取各个配置参数
查看>>
android ant Compile failed; see the compiler error
查看>>
项目经理笔记一
查看>>
通过IP地址获取地理位置
查看>>
计算机字符编码从0/1到UTF-8
查看>>
[原]Jenkins(三)---Jenkins初始配置和插件配置
查看>>
Cache Plugin 实现过程
查看>>