文档章节

Java中自定义注解的使用

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

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

第一步:(了解元注解)

    一.@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
博文 52
码字总数 35131
作品 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
Kotlin和Java混合开发必读:基本的互操作

在使用Kotlin和Java混合开发的时候,涉及到一些基本的互操作 一、属性的读写 1.Kotlin自动识别Java的属性的Getter和Setter 2.Java操作kotlin属性可以通过Getter和Setter的方式 二、空安全类型...

王木东
04/05
0
0
Java Annotation 简介

本文介绍了Java Annotation相关知识并附有相关的Demo。内容仅供参考使用,有不足之处请及时指出,也欢迎大家交流探讨。 Java Annotation 概述 Java Annotation翻译为Java 注解,注解也称为元...

村头细雨忆流年
08/28
0
0
justlive1/oxygen

oxygen 轻量级Java框架 介绍 一个轻量级Java框架 oxygen-core 核心部分 基于cglib的aop实现 提供缓存管理和基于注解的缓存,内置LocalCache和Ehcache实现,可扩展 配置管理,支持${attrs.key...

justlive1
10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql 数据类型及占用字节数

数字类型 TINYINT                           1 字节 SMALLINT                          2 个字节 MEDIUMINT                         3 个字节...

会游泳的鱼_
47分钟前
3
0
高性能mysql:创建高性能的索引

性能优化简介 MySQL性能定义为完成某件任务所需要的时间量度,换句话说,性能即响应时间,这是一个非常重要的原则。我们通过任务和时间而不是资源来测量性能。数据库服务器的目的是执行SQL语...

背后的辛酸
今天
6
0
HTTP get、post 中请求json与map传参格式

import java.io.IOException;import java.net.URI;import java.net.URISyntaxException;import java.nio.charset.Charset;import java.util.ArrayList;import java.util.List;im......

寒风中的独狼
今天
3
0
IDEA中tomcat启动慢 耗时10分钟

用idea中的tomcat以debug模式启动,会非常的慢,而正常启动没啥问题;原因是debug模式中View Breakpoints断点代码,断点的是jar包,而现在启动由于jar包发生变化,导致启动时一直处于等待中。...

GoodMarver
今天
5
0
Linux学习-10月18(awk)

9.6/9.7 awk 一、awk简介   1. awk是一种编程语言,用于对文本和数据进行处理的   2. 具有强大的文本格式化能力   3. 利用命令awk,可以将一些文本整理成为我们想要的样子   4. 命令awk...

wxy丶
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部