java进阶之自定义注解

关于作者:

贾帅

博客:https://shuaijia.github.io/

github:https://github.com/shuaijia

csdn:http://blog.csdn.net/jiashuai94

一、简介

注解是Java 1.5引入的,可以提供代码的额外信息,目前正在被广泛应用。除了Java内置注解,我们也可以自定义注解。

以下就是一个自定义注解的简单例子:

自定义注解关键点:

@interface关键字定义注解

注解可以被其它注解修饰,最重要的就是元注解

注解和接口类似,内部可以定义常量和方法

注解定义的方法有一些限制:方法不能有参数;返回值只能是基本类型、字符串、Class、枚举、注解、及以上类型的数组;可以包含默认值

二、元注解介绍

元注解就是定义注解的注解。

包含@Target、@Retention、@Inherited、@Documented这四种

1、@Target

描述注解的使用目标。

其源码为:

注解方法返回值是ElementType[],ElementType枚举类型,枚举值就是@Target注解的可取值。

方法名value,这样在使用注解时,可以不需要指定方法名。

可取的值有:

2、@Retention

注意:默认可以作用于以上任何目标。

描述注解的生命周期。

其源码为:

注解方法返回值是枚举类型RetentionPolicy,枚举值就是@Retention注解的可取值。

可取的值有:

3、@Documented

默认RetentionPolicy.CLASS 值。

描述注解可以文档化,是一个标记注解。

在生成javadoc的时候,是不包含注释的,但是如果注解被@Documented修饰,则生成的文档就包含该注解。

其源码为:

4、@Inherited

标记注解,使用@Inherited修饰的注解作用于一个类,则该注解将被用于该类的子类。

其源码为:

三、自定义注解示例1、定义注解

其中:定义了三个方法,三个方法都有默认返回值。定义了Color枚举(因为注解的方法可以返回枚举类型)

这里注意:

value方法:使用注解时可直接传参,如 @JsAnnotation("msg")

普通方法:使用注解时,如 @JsAnnotation(color=Color.BLUE)

2、使用注解

3、获取注解

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180110G037AX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券