全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

简单谈谈java自定义注解

Java在1.5开始引入了注解,目前流行的框架都在用注解,可想而知注解的强大之处。

以下通过自定义注解来深入了解java注解。

一、创建自定义注解

package com.sam.annotation;
import java.lang.annotation.*;

/**
 * @author sam
 * @since 2017/7/13
 */
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface MyMessage {

  String name() default "sam";

  int num() default 0;

  String desc();

}

说明:

@Target、@Retention、@Inherited、@Documented为元注解(meta-annotation),它们是负责注解其他注解的。

1、Target:指明注解支持的使用范围,取值可以参考枚举ElementType,以下:

ElementType.TYPE //类、接口、枚举
ElementType.FIELD //属性
ElementType.METHOD //方法
ElementType.PARAMETER //参数
ElementType.CONSTRUCTOR //构造器
ElementType.LOCAL_VARIABLE //局部变量
ElementType.ANNOTATION_TYPE //注解
ElementType.PACKAGE //包

2、Retention:指明注解保留的的时间长短,取值参考枚举RetentionPolicy,一下:

SOURCE //源文件中保留
CLASS //class编译时保留
RUNTIME //运行时保留

3、Inherited:指明该注解类型被自动继承。如果一个annotation注解被@Inherited修饰,那么该注解作用于的类 的子类也会使用该annotation注解。

4、Documented:指明拥有这个注解的元素可以被javadoc此类的工具文档化。

二、创建测试类,使用自定义注解

package com.sam.annotation;
/**
 * @author sam
 * @since 2017/7/13
 */
public class AnnotationTest {

  @MyMessage(num = 10, desc = "参数a")
  private static int a;


  @MyMessage(name = "Sam test", desc = "测试方法test")
  public void test() {
    System.out.println("test");
  }

}

在该类中的属性和方法,使用了自定义的注解,并指明了参数。

那么现在就需要解析自定义的注解。

三、解析注解

使用反射机制处理自定义注解

package com.sam.annotation;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * 使用反射处理注解
 *
 * @author sam
 * @since 2017/7/13
 */
public class MyMessageProcessor {

  public static void main(String[] args) {

    try {

      //加载annotationTest.class类
      Class clazz = MyMessageProcessor.class.getClassLoader().loadClass("com.sam.annotation.AnnotationTest");

      //获取属性
      Field[] fields = clazz.getDeclaredFields();
      //遍历属性
      for (Field field : fields) {
        MyMessage myMessage = field.getAnnotation(MyMessage.class);
        System.out.println("name:" + myMessage.name() + " num:" + myMessage.num() + " desc:" + myMessage.desc());
      }

      //获取类中的方法
      Method[] methods = clazz.getMethods();
      //遍历方法
      for (Method method : methods) {

        //判断方法是否带有MyMessage注解
        if (method.isAnnotationPresent(MyMessage.class)) {
          // 获取所有注解 method.getDeclaredAnnotations();
          // 获取MyMessage注解
          MyMessage myMessage = method.getAnnotation(MyMessage.class);
          System.out.println("name:" + myMessage.name() + " num:" + myMessage.num() + " desc:" + myMessage.desc());
        }
      }

    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    }
  }

}

运行MyMessageProcessor 得到结果:

name:sam num:10 desc:参数a
name:Sam test num:0 desc:测试方法test

Process finished with exit code 0

具体定制注解所实现的内容,可以在MyMessageProcessor.java中进行修改。

自此,已经对java的自定义注解有简单的了解。

以上这篇简单谈谈java自定义注解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# java自定义注解  # Java注解简单使用实例解析  # Java注解处理器简单实例  # Java利用自定义注解、反射实现简单BaseDao实例  # java利用注解实现简单的excel数据读取  # Java注解的简单入门小案例  # 自定义  # 遍历  # 给大家  # 类中  # 也会  # 都在  # 子类  # 之处  # 希望能  # 此类  # 这篇  # 小编  # 可想而知  # 大家多多  # 作用于  # 加载  # 文档  # 使用了  # 引入了  # Documented 


相关文章: 广州商城建站系统开发成本与周期如何控制?  如何高效配置IIS服务器搭建网站?  香港服务器租用每月最低只需15元?  如何选择建站程序?包含哪些必备功能与类型?  如何在宝塔面板中创建新站点?  详解jQuery停止动画——stop()方法的使用  建站之星会员如何解锁更多建站功能?  如何选择靠谱的建站公司加盟品牌?  微信h5制作网站有哪些,免费微信H5页面制作工具?  建站之星后台密码如何安全设置与找回?  如何选择高效可靠的多用户建站源码资源?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  ,交易猫的商品怎么发布到网站上去?  建站主机与服务器功能差异如何区分?  如何配置FTP站点权限与安全设置?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  制作网站外包平台,自动化接单网站有哪些?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  微信推文制作网站有哪些,怎么做微信推文,急?  如何在服务器上配置二级域名建站?  Java解压缩zip - 解压缩多个文件或文件夹实例  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  如何快速完成中国万网建站详细流程?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  如何选择服务器才能高效搭建专属网站?  如何快速搭建高效WAP手机网站吸引移动用户?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何用低价快速搭建高质量网站?  招贴海报怎么做,什么是海报招贴?  宝塔面板如何快速创建新站点?  香港服务器部署网站为何提示未备案?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  如何在IIS中新建站点并配置端口与IP地址?  制作网站的基本流程,设计网站的软件是什么?  建站之星安装模板失败:服务器环境不兼容?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  C++时间戳转换成日期时间的步骤和示例代码  外贸公司网站制作,外贸网站建设一般有哪些步骤?  移民网站制作流程,怎么看加拿大移民官网?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  红河网站制作公司,红河事业单位身份证如何上传?  建站主机服务器选购指南:轻量应用与VPS配置解析  广州美橙建站如何快速搭建多端合一网站?  建站之星下载版如何获取与安装?  Swift开发中switch语句值绑定模式  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。