前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java自定义注解及解析注解

Java自定义注解及解析注解

作者头像
itze
发布2022-10-31 15:53:37
2510
发布2022-10-31 15:53:37
举报
文章被收录于专栏:IT者

自定义注解

类名:Desc
代码语言:javascript
复制
import java.lang.annotation.*;

/**
 * @Author: www.itze.cn
 * @Date: 2020/09/13 14:58
 * @Email: 814565718@qq.com
 */
/**
 * @Target:注解的作用范围,METHOD:作用在方法上,TYPE:作用在类上
 * @Retention:注解的生命周期,RUNTIME:运行时
 * @Inherited:子类继承父类,只能解析到类层,方法层解析不到
 */
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface Desc {
    //成员组成必须是无参/无异常
    String value();
}

注解使用

类名:DescMethod
代码语言:javascript
复制
/**
 * @Author: www.itze.cn
 * @Date: 2020/09/13 15:20
 * @Email: 814565718@qq.com
 */
@Desc(value = "This is DescMethod Class")
public class DescMethod {
    @Desc(value = "This is A Method")
    public void A(){}
    @Desc(value = "This is B Method")
    public void B(){}
}

解析注解

代码语言:javascript
复制
    public static void main(String[] args) {
        /**
         * 解析注解
         * 获取类上的注解内容
         */
        Class<DescMethod> methodClass = DescMethod.class;
        boolean classAnnotationPresent = methodClass.isAnnotationPresent(Desc.class);
        //如果DescMethod.class中存在@Desc注解
        if (classAnnotationPresent) {
            //获取@Desc注解
            Desc annotation = methodClass.getDeclaredAnnotation(Desc.class);
            //得到@Desc注解中的内容
            String desc = annotation.value();
            System.out.println(desc);
        }
        /**
         * 解析注解
         * 获取类中方法上的注解内容
         */
        //获取类中所有方法
        Method[] methods = methodClass.getDeclaredMethods();
        for (Method method : methods
        ) {
            boolean methodAnnotationPresent = method.isAnnotationPresent(Desc.class);
            //如果该方法上存在@Desc注解
            if (methodAnnotationPresent) {
                //获取@Desc注解
                Desc annotation = method.getDeclaredAnnotation(Desc.class);
                //得到该方法上@Desc注解的内容
                String desc = annotation.value();
                System.out.println(desc);
            }
        }
    }

执行结果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年10月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 自定义注解
    • 类名:Desc
    • 注解使用
      • 类名:DescMethod
      • 解析注解
      • 执行结果
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档