全网整合营销服务商

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

免费咨询热线: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 


相关文章: 网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  Python如何创建带属性的XML节点  音乐网站服务器如何优化API响应速度?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  建站主机空间推荐 高性价比配置与快速部署方案解析  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  C#怎么创建控制台应用 C# Console App项目创建方法  无锡营销型网站制作公司,无锡网选车牌流程?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  建站主机SSH密钥生成步骤及常见问题解答?  网站企业制作流程,用什么语言做企业网站比较好?  如何通过商城自助建站源码实现零基础高效建站?  seo网站制作优化,网站SEO优化步骤有哪些?  如何快速生成可下载的建站源码工具?  如何用y主机助手快速搭建网站?  建站三合一如何选?哪家性价比更高?  jQuery 常见小例汇总  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  建站之星与建站宝盒如何选择最佳方案?  如何批量查询域名的建站时间记录?  装修招标网站设计制作流程,装修招标流程?  C++如何使用std::optional?(处理可选值)  临沂网站制作企业,临沂第三中学官方网站?  高防服务器:AI智能防御DDoS攻击与数据安全保障  制作宣传网站的软件,小红书可以宣传网站吗?  制作农业网站的软件,比较好的农业网站推荐一下?  自助网站制作软件,个人如何自助建网站?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  建站之星如何保障用户数据免受黑客入侵?  制作销售网站教学视频,销售网站有哪些?  广平建站公司哪家专业可靠?如何选择?  制作表格网站有哪些,线上表格怎么弄?  如何确保西部建站助手FTP传输的安全性?  建站主机选择指南:服务器配置与SEO优化实战技巧  小建面朝正北,A点实际方位是否存在偏差?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  南宁网站建设制作定制,南宁网站建设可以定制吗?  视频网站制作教程,怎么样制作优酷网的小视频?  如何高效利用200m空间完成建站?  浅谈Javascript中的Label语句  清除minerd进程的简单方法  TestNG的testng.xml配置文件怎么写  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  建站之星如何配置系统实现高效建站?  如何通过NAT技术实现内网高效建站?  制作企业网站建设方案,怎样建设一个公司网站?  建站之星×万网:智能建站系统+自助建站平台一键生成 

您的项目需求

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