文档章节

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

 

© 著作权归作者所有

共有 人打赏支持
最爱肉肉
粉丝 4
博文 53
码字总数 37271
作品 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
轻量级 Java 框架 - JOxygen

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

justlive1
11/13
0
0
Kotlin和Java混合开发必读:基本的互操作

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

王木东
04/05
0
0
通过 HttpAuthenticationMechanism 执行 Web 身份验证

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

Alex Theedom
04/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery通过id显示隐藏

var $div3 = $('#div3'); 显示 $div3.show(); 隐藏 $div3.hide();

yan_liu
今天
3
0
《乱世佳人》读书笔记及相关感悟3900字

《乱世佳人》读书笔记及相关感悟3900字: 之前一直听「荔枝」,后来不知怎的转向了「喜马拉雅」,一听就是三年。上班的时候听房产,买房了以后听装修,兴之所至时听旅行,分手后听亲密关系,...

原创小博客
今天
3
0
大数据教程(9.6)map端join实现

上一篇文章讲了mapreduce配合实现join,本节博主将讲述在map端的join实现; 一、需求 实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志...

em_aaron
今天
3
0
cookie与session详解

session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优惠.这时...

士兵7
今天
3
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部