java自定义注解

2023-11-05

Java自定义注解的步骤如下123

  • 使用@interface关键字定义注解,注解的成员参数只能是基本类型、String、Class、Enum、Annotation或者它们的数组。
  • 使用元注解@Target、@Retention、@Documented、@Inherited、@Repeatable来修饰自定义注解,指定注解的作用目标、生命周期、文档生成、继承性和重复性等属性。
  • 使用反射API来获取注解信息,并根据注解的逻辑进行相应的处理。

例如,下面是一个自定义注解的例子,用来给类或方法添加描述信息4

// 定义一个名为Description的注解
@Target({ElementType.TYPE, ElementType.METHOD}) // 作用于类和方法
@Retention(RetentionPolicy.RUNTIME) // 运行时有效
@Documented // 生成文档
public @interface Description {
    // 定义一个名为value的成员参数,类型为String,默认值为空
    String value() default "";
}

// 使用Description注解来修饰一个类和方法
@Description("这是一个人类")
public class Person {
    @Description("这是一个说话的方法")
    public void speak() {
        System.out.println("Hello");
    }
}

// 使用反射API来获取注解信息并打印
public class Test {
    public static void main(String[] args) throws Exception {
        // 获取Person类的Class对象
        Class<?> clazz = Person.class;
        // 判断是否有Description注解
        if (clazz.isAnnotationPresent(Description.class)) {
            // 获取Description注解对象
            Description desc = clazz.getAnnotation(Description.class);
            // 获取注解的值
            String value = desc.value();
            // 打印结果
            System.out.println("类的描述:" + value);
        }
        // 获取Person类的speak方法对象
        Method method = clazz.getMethod("speak");
        // 判断是否有Description注解
        if (method.isAnnotationPresent(Description.class)) {
            // 获取Description注解对象
            Description desc = method.getAnnotation(Description.class);
            // 获取注解的值
            String value = desc.value();
            // 打印结果
            System.out.println("方法的描述:" + value);
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java自定义注解 的相关文章

随机推荐

  • Golang V1.19.1 安装配置 (windows

    目录 一 安装 1 下载地址 2 安装过程 二 环境配置 1 环境变量 2 更改代理地址 三 开发工具 1 Visual Studio Code 2 goland 一 安装 1 下载地址 https golang google cn dl
  • AnyViewer——局域网外远程控制电脑

    优势 免费 傻瓜式操作 小众 不容易涨价 缺点 手机端获取不到电脑声音 文件 手机端APP 各大应用商城即可下载 电脑端应用及使用方式 如何使用傲梅远程桌面软件 手机端和电脑端文件传输方案 阿里云盘 AnyViewer 手机端和电脑端的文件
  • 在QT的UI界面,让Widget可以跟随窗体大小而改变

    可以使用布局 Layout 机制让Widget QWidget 随窗口一起缩放和移动 Qt提供以下几种布局 QHBoxLayout 将QWidget按照水平方向依次排列 QVBoxLayout 将QWidget按照垂直方向依次排列 QGri
  • QString与char *转换

    QString转换成char 方法一 转换为Latin1字符集的char QString qstr test char ch qstr toLatin1 data qDebug lt lt ch lt
  • Io汇总(二) inputStream 以及子类

    InputStream public abstract class InputStream implements Closeable 字节输入流的所有超类 abstract int read 从输入流读取数据的下一个字节 int read
  • nacos--基础--2.1--部署--介绍

    nacos 基础 2 1 部署 介绍 1 Nacos部署环境 Nacos定义为一个IDC内部应用组件 并非面向公网环境的产品 建议在内部隔离网络环境中部署 强烈不建议部署在公共网络环境 2 Nacos支持三种部署模式 单机模式 用于测试和单
  • 2021美赛C题

    2021年MCM问题C 确认黄蜂的传言 2019年9月 在加拿大不列颠哥伦比亚省的温哥华岛上发现了胡蜂 Vespa mandarinia 又称亚洲大黄蜂 的殖民地 鸟巢很快被摧毁 但这一事件的消息迅速传遍了整个地区 从那时起 在邻近的华盛顿
  • HTML讲解(HTML结构及标签)

    目录 1 HTML结构 1 1 HTML 基本结构 1 2 标签层次结构 2 HTML常见标签 2 1 注释标签 2 2 标题标签 2 3 段落标签 2 4 换 标签 br 2 5 格式化标签 2 6 图 标签 img 2 7 超链接标签
  • 如何使用 Flutter 创建动态岛和 ActivityKit

    本教程将向您展示如何在 iOS 中设置动态岛 我使用的是 Xcode 14 1 Beta 2 但您可以将其用作 Native 和 Flutter 的指南 当 Xcode 14 1 发布或 Apple 对 Beta 版进行更改时 我将再次更新
  • sbrk() 函数是干什么的?

    brk和sbrk主要的工作是实现虚拟内存到内存的映射 在GNU C中 内存分配是这样的 每个进程可访问的虚拟内存空间为3G 但在程序编译时 不可能也没必要为程序分配这么大的空间 只分配并不大的数据段空间 程序中动态分配的空间就是从这一块分配
  • matplotlib折线图及其简单图形格式设置,自己留着用的

    matplotlib 简单图形格式设置 方便自己 coding utf 8 author qyy time 2019 7 10 from pylab import import matplotlib pyplot as plt 图像上显示中
  • RNN循环神经网络训练过程的matlab模拟仿真

    目录 1 算法概述 2 仿真效果 3 MATLAB仿真源码 1 算法概述 CNN 卷积神经网络 我们会发现 他们的输出都是只考虑前一个输入的影响而不考虑其它时刻输入的影响 比如简单的猫 狗 手写数字等单个物体的识别具有较好的效果 但是 对于
  • DataGrip使用

    DataGrip是JetBrains的一款数据库管理IDE 苦于现在使用的工具很不顺手 就安装了这款工具的试用版 发现功能还是很强大 JB还是很给力 下载 在官网下载DataGrip的社区试用版 地址是 https www jetbrain
  • [R语言]手把手教你如何绘图(万字)

    目录 概况 常用高级图形 条形图 csv文件导入 csv文件导出 R语言sep函数 seq函数 with函数 直方图和密度估计图 盒型图 boxplot 正态QQ图 散点图 pairs 散点矩阵图 曲线图 curve 三维图 动态三维图 低
  • 分享一个经典黑qss风格样式

    Shared QStackedWidget QLabel QPushButton QRadioButton QCheckBox QGroupBox QStatusBar QToolButton QComboBox QDialog backg
  • C语言神经网络识别手写数字,手写数字识别(0~9)基于BP神经网络算法

    博客链接 digittra txt 是训练集合 是数字图像像素值的数据项 digittest txt是测试集合 test accuracy x txt是输出的预测精度 1 文件 digitstest txt 220KB 下载 473 2 文
  • python cufflinks 绘制折线图_Python金融科技(一)cufflinks绘制金融图表

    前言 前段时间本蒟蒻发现一个功能强大的绘图工具库cufflinks 其最吸引我的地方是内置了量化金融绘图模块 可以很方便地绘制K线和技术指标图表 但遗憾的是 在网络上并没有找到cufflinks的参考手册 虽然网络上有一些介绍cufflin
  • idea前端可视化_jsp可视化开发工具_netbeans jsp可视化_idea 可视化开发 jsp

    数字生态钜惠来袭 秒杀 2核4G 5M带宽 1200元 3年 1核1G首购 99元 年 把默认改成 myeclipse jsp editor 原默认的jsp编辑器是 myeclipse visual jspdesigner 顾名思义 此编译
  • linux ALSA & ASOC(1)—— framwork

    一 ALSA framwork 涉及文件 函数 sound core sound c snd register device for dev 创建次设备 sound core init c snd card create 创建contorl
  • java自定义注解

    Java自定义注解的步骤如下123 使用 interface关键字定义注解 注解的成员参数只能是基本类型 String Class Enum Annotation或者它们的数组 使用元注解 Target Retention Document