文档章节

Java中自定义注解的使用

最爱肉肉
 最爱肉肉
发布于 2016/10/03 17:42
字数 932
阅读 47
收藏 1
点赞 0
评论 0

使用自定义注解分为三步:

第一步:(了解元注解)

    一.@Target(用于描述注解的使用范围)
    二.@Retention(表示需要在什么级别保存该注释信息,用于描述注解的生命周期)
    三.@Documented(Documented是一个标记注解,用于被标注的程序成员的公共API)
    四.@Inherited(子类是否继承该注解)

第二部:(掌握默认值/值配置)

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
/**
 * 注解测试
 */
public @interface MyAnnotation {
    //第一个是参数类型,第二个是参数方法名,之后是默认值
    String value() default "def";

    String fool();

    int id() default 0 ;

}
public class AnnotationTest {
    //注解的使用
    @MyAnnotation(fool = "55", id = 5)
    String str;
}

第三步,注解的操作(处理).

import java.lang.reflect.Field;

/**
 * 处理自定义注解
 */
public class AnnotationUtil {

    public static void getInfo(Class<?> clazz) {
        //获取所有注解
        Field[] fields = clazz.getDeclaredFields();
        //遍历
        for (Field field : fields) {
            //判断是否有该注解
            if (field.isAnnotationPresent(MyAnnotation.class)) {
                MyAnnotation annotation = field.getAnnotation(MyAnnotation.class);
                //取的值输出
                System.out.println(annotation.value());
                System.out.println(annotation.fool());
                System.out.println(annotation.id());
            }
        }
    }


}

启动测试:

public class Test {

    public static void main(String[] args) {
        AnnotationUtil.getInfo(AnnotationTest.class);
    }

}

结果:

"C:\Program Files\Java\jdk1.8.0_74\bin\java" -Didea.launcher.port=7532 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA 2016.1.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_74\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_74\jre\lib\rt.jar;F:\IdeaWorkShop\StudyJava\out\production\StudyJava;F:\IdeaWorkShop\StudyJava\lib\aspectjrt.jar;F:\IdeaWorkShop\StudyJava\lib\spring-ws.jar;F:\IdeaWorkShop\StudyJava\lib\aspectjtools.jar;F:\IdeaWorkShop\StudyJava\lib\aspectjweaver.jar;F:\IdeaWorkShop\StudyJava\lib\aopalliance-1.0.jar;F:\IdeaWorkShop\StudyJava\lib\commons-logging-1.2.jar;F:\IdeaWorkShop\StudyJava\lib\org.aspectj.matcher.jar;F:\IdeaWorkShop\StudyJava\lib\spring-data-jpa-1.3.3.jar;F:\IdeaWorkShop\StudyJava\lib\spring-js-2.4.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-tx-4.3.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-aop-4.3.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-jms-4.3.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-orm-4.3.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-oxm-4.3.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-core-4.3.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-jdbc-4.3.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-test-4.3.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-beans-4.3.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-faces-2.4.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-aspects-4.3.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-binding-2.4.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-context-4.3.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-webflow-2.4.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-messaging-4.3.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-expression-4.3.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-instrument-4.3.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-js-resources-2.4.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-ip-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-ws-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-context-support-4.3.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-ftp-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-jms-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-jmx-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-jpa-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-rmi-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-xml-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-amqp-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-core-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-feed-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-file-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-http-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-jdbc-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-mail-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-mqtt-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-sftp-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-test-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-xmpp-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-instrument-tomcat-4.3.0.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-event-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-redis-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-groovy-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-stream-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-syslog-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-gemfire-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-mongodb-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-twitter-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-security-4.0.3.RELEASE.jar;F:\IdeaWorkShop\StudyJava\lib\spring-integration-scripting-4.0.3.RELEASE.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA 2016.1.2\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain com.pan.annotation.Test
def
55
5

Process finished with exit code 0

 

© 著作权归作者所有

共有 人打赏支持
最爱肉肉
粉丝 3
博文 51
码字总数 34967
作品 0
深圳
程序员
Java注解教程:自定义注解示例,利用反射进行解析

Java注解能够提供代码的相关信息,同时对于所注解的代码结构又没有直接影响。在这篇教程中,我们将学习Java注解,如何编写自定义注解,注解的使用,以及如何使用反射解析注解。 注解是Java ...

哲别0
2017/10/23
0
0
Java注解(Annotation)详解

Java注解(Annotation)详解 1.Annotation的概念 An annotation is a form of metadata, that can be added to Java source code. Classes, methods, variables, parameters and packages may......

幻海流心
05/23
0
0
通过 HttpAuthenticationMechanism 执行 Web 身份验证

通过 Java EE 8 中新的注解驱动的 HTTP 身份验证机制执行经典和自定义的 Servlet 身份验证 系列内容: 此内容是该系列 4 部分中的第 # 部分: Java EE 8 Security API 入门,第 2 部分 http...

Alex Theedom
04/02
0
0
Java SE Annotations API学习

注解,元数据的一种形式,提供关于程序不是程序本身的一部分数据。注解对代码的操作没有直接影响。 注解有多用途,如: a、用于编译信息。通过编译器检测错误or抑制警告 b、编译时和部署时的...

Rksi5
2014/04/08
0
0
Java注解是怎么成功上位的?

1、XML大臣 最近这几年,XML大臣的宅邸车水马龙,像什么Spring, Hibernate, MyBatis 等大大小小的官员进京来都要拜访一下,无数的冰敬碳敬悄悄地送入府中, 真可谓红极一时, 正处于人生巅峰...

大数据之路
2014/03/24
0
0
fastjson对Date的处理

对日期的序列化: 一种方法是通过注解 Java代码 @JSONField (format="yyyy-MM-dd HH:mm:ss") public Date birthday; 另一种是通过SerializeConfig: Java代码 private static SerializeConf......

John-HZ
2015/02/05
0
2
「Android」Android开发你需要知道的注解(Annotation)

本文来自尚妆Android团队路飞 发表于尚妆github博客,欢迎订阅! 一、什么是注解 1、注解的作用 2、注解都有哪些 二、自定义注解 1、RetentionPolicy.SOURCE 2、RetentionPolicy.RUNTIME 3、...

尚妆产品技术刊读
2017/06/15
0
0
play2.0文档-面向java开发者(6)

Action composition Action组合 This chapter introduces several ways to define generic action functionality. 这章节介绍几个定义通用action功能的方式。 Reminder about actions actio......

老盖
2012/04/12
0
0
playframework 拦截器

我觉得play的拦截器有点AOP的思想,相当于struts的filter,play的拦截器使用注解方式实现的。 源码定义了这么几种注解:@before、@after、@catch、@finally 可谓是三百六十度无死角的拦截了。...

2k10
2015/03/20
0
0
Java自定义Annotation方法

基本语法 Java代码 import java.lang.annotation.ElementType; import java.lang.annotation.Target; // The @Bind tag. @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME)......

stefanzhlg
2014/12/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

聊聊spring cloud的AsyncLoadBalancerAutoConfiguration

序 本文主要研究一下AsyncLoadBalancerAutoConfiguration AsyncLoadBalancerAutoConfiguration spring-cloud-commons-2.0.0.RELEASE-sources.jar!/org/springframework/cloud/client/loadba......

go4it
12分钟前
0
0
10.19 iptables规则备份和恢复 ,firewalld的9个zone,service的操作

保存和备份iptables规则 内容: 保存iptables规则 service iptables save 把iptables规则备份到my.ipt文件中: iptables-save > my.ipt 恢复刚才备份的规则: iptables-restore < my.ipt 1.......

Linux_老吴
14分钟前
0
0
Vue 自动化表单相关资料

1.使用vue自动化表单 2.Vue可视化,Vue代码生成,Vue动态表单 3.前端表单进阶之路:通过 Vue.js 实现表单可配置化 4.使用Vue动态生成form表单

IT追寻者
15分钟前
0
0
动态SQL

一、动态SQL 1、if <select id="findActiveBlogWithTitleLike" resultType="Blog"> SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test="title != null"> AND title l......

一个yuanbeth
18分钟前
0
0
使用ExternalDNS自动化DNS配置

Kubernetes社区的生态繁荣和该领域技术的快速茁壮发展,已经是众所周知。Kubernetes领域有太多强大的、创新的技术产品,而最近引起我注意的项目是ExternalDNS。这是在近期的POC期间客户主动咨...

RancherLabs
22分钟前
0
0
多线程-Lock

今天写了一段测试Lock的代码,如下: namespace TLock{ class Program { static void Main(string[] args) { TMyThread myThread = new TMyThre......

kaixinguo314
33分钟前
0
0
如何清洁你脏兮兮的笔记本电脑?

简评:我还以为清理笔记本就是吹灰。 本文转自纽约时报(中文版),原文见文末。 你知道你的笔记本电脑很脏。你可以看到键盘上的灰尘和污垢,以及触控板中间的皮肤油印。那你上次清洁它是什么...

极光推送
37分钟前
0
0
中国经济模式转型的挑战

  中国经济模式转型的挑战   陈志武(耶鲁大学金融经济学教授)   今天我讲的题目是当前大家关心的,特别是这次金融危机之后,中国学界、决策层还有民间,都很关注中国以后的走向,社会...

吕伯文
43分钟前
2
0
win10玩docker无法Share Drivers的坑

Win10下使用Docker的开启Shared Drivers的时候,一直卡在:Sharing Drivers。 原因如下: 1.检查操作性系统的net share功能开启了没有 cmd-->services.msc 查看Server和Workstation两个S...

傲娇字符
43分钟前
0
0
Intellij Idea快捷键的使用

Ctrl +H 全文搜索 快捷键模式Eclipse Alt +左箭头 上一个方法 Alt + 右箭头 下一个方法 Ctrl + 左键点击文件title 提示文件路径 参考资料 http://wiki.jikexueyuan.com/project/intellij-ide...

轩辕剑
48分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部