Java基础--java注解

2023-10-29

一、什么是java注解

一、概念

1、java注解:说明程序的,是给计算机看的,也叫元数据,一种代码级别的说明。又叫java标注,是jdk1.5引入的一种注释机制,与类、接口、枚举是在同一个层次,可以声明在包,类,字段,局部变量里面,方法参数等前面。用来对这些元素进行说明。

2、java注释:用文字描述程序的,主要是用来给程序员看的

二、作用分类

1、编辑文档:通过代码里标识的注解生成文档(javadoc xx.java)

2、代码分析:通过代码里标识的注解对代码进行分析(使用反射)

3、编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查(Override)

三、java注解分类

1、jdk预定义注解:

1、@Override:标记在子类中是否重写了父类的方法,如果不是则会报错

2、@Deprecated:标记此方法已过时

3、@SuppressWarnings:压制警告

2、元注解:元注解可以理解为注解的注解

1、@Retention:标注注解的保存时期,一般有:SOURCE、CLASS、RUNTIME(当前描述的注解会被保留到class字节文件中,并被jvm读取到)

2、@Documented:使用此注解可以让注解保存到javadoc文档中

3、@Target:注解的类型,可以是在类上,方法上等

4、@Inherirted:标注注解是否可以继承

3、新增注解:

1、@SafavarArgs:忽略方法或者构造方法的参数为泛型所产生的警告

2、@FuntionalInterface:标注一个函数性接口

3、@Repeatable:标识某注解可以在同一个声明上使用多次

二、自定义注解

 一、格式:

public @Interface 注解名称{

        属性列表;

}

 二、本质:

注解本质上就是一个接口,该接口默认继承Annotation接口

public interface test extends java.lang.annotation.Annotation{}

三、属性 :接口中的抽象方法

1、属性的返回值有下列取值

1、基本数据类型

2、String

3、枚举

4、注解

5、Class

6、以上类型的数组

2、定义了属性,在使用是需要给属性赋值

1、如果定义属性时使用了关键字default给属性设置了默认值,那么在使用时就可以不用给属性赋值,而这个时候会使用默认值

2、如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略,直接赋值即可

3、如果需要赋值的是数组类型,则需要使用{}包裹,如果数组中只有一个值,则{}可以省略

 四、在程序中使用注解

一、步骤:

主要是获取注解中定义的属性值

1、获取注解定义的位置的对象(Class,Method,Field)

2、获取指定的注解

3、调用注解中的抽象方法获取配置的属性值

二、栗子

1、创建自定义注解

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Inherited
public @interface Test{
    String value();
}

2、使用自定义注解 

public class TestClient {
    @Test(value="test example")
    public void test(){
        System.out.println("test example");
    }
}

3、测试

public class TestDemo {
    public static void main(String[] args) throws Exception {
        TestClient testClient =new TestClient ();
        Method method=testClient .getClass().getMethod("test");
        if(method.isAnnotationPresent(Test.class)){
            Test test=method.getAnnotation(Test.class);
            System.out.println("Value : "+test.value());
            //执行方法
            method.invoke(testClient); }
            }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java基础--java注解 的相关文章

随机推荐

  • Fabric-商业票据项目说明

    商业票据项目 PaperNet network PaperNet是一个商业票据网络 允许适当授权的参与者发行 交易 赎回和评级商业票据 PaperNet 商业票据网络 6个机构参与 行为有 发行 购买 出售 赎回 评级 MagentoCor
  • 最长公共子序列-动态规划-python

    题目描述 给定一个长度为 N 数组 a 和一个长度为 M 的数组 b 请你求出它们的最长公共子序列长度为多少 输入描述 输入第一行包含两个整数 N M 分别表示数组 a 和 b 的长度 第二行包含 N 个整数 a1 a2 an 第三行包含
  • matlab相关性分析

    相关性分析 一 皮尔逊相关系数 person 计算公式 样本协方差 C o v x y
  • 三个可长期发展的网络副业,稳定的兼职渠道,不再为网络做苦力

    绝大多数互联网从业者 实际上脑中想得仅有一件事 没脑子的打金月入破万 不否认这类第二职业也是有 但是也是必须必要条件的 你必须早期非常辛苦 后边才可能保证大批量躺着赚钱 而与一开始就听话照做 这也是两回事 我一直都不太建议去做这些稳准狠项目
  • 【shell重试脚本示例】

    handle interrupt echo Received Ctrl C to terminate the command exit 1 log info echo e echo e e 1 32m INFO e 0m 1 echo e
  • ssh远程登录协议和tcp wappers

    目录 SSH服务 优点 SSH客户端和服务端 SSH端口 配置文件 ssh原理 公钥传输原理 ssh加密通讯原理 配置OpenSSH服务端 服务监听选项 登录 scp远程复制 TCP Wrappers 策略的配置格式 轻量级自动化运维工具p
  • Qt中文手册 之 QTreeWidgetItem

    头文件 include
  • umi 导航菜单的空白页问题

    主思路 routes里的上级菜单必须设定path 否则下一个二级菜单会出现空白页 详情 umi的导航菜单是在 config routes ts 里设定的 比如 export default name home path home compo
  • 在计算机睡眠时主机关闭,电脑为什么睡眠后就关机怎么办

    1 电脑睡眠后再次启动时就关机怎么办 桌面 属性 屏幕保护程序 在下方有个 在按下计算机睡眠按钮时 你选中 待机 补充 再按下待机按钮啊 补充 你待机后 想重新打开电脑就再按下电源按钮就行了啊 不行的话桌面 属性 屏幕保护程序 电源 高级
  • MongoDB 查看集合中所有的数据

    找到mongodb的安装路径下bin目录 运行mongo exe 输入show dbs 命令 查看数据库 进入要使用的数据库 命令 use 数据库名字 查看该数据库中的集合 命令 show collections 查看里面所有的数据 命令
  • css预处理器

    一 为什么会出现css预处理器 CSS不是一种编程语言 仅仅只能用来编写网站样式 在web初期时 网站的搭建还比较基础 所需要的样式往往也很简单 但是随着用户需求的增加以及网站技术的升级 css一成不变的写法也渐渐不再满足于项目 没有类似j
  • 高并发+海量数据下如何实现系统解耦?【中】

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 目录 一 前情提示 二 清晰划分系统边界 三 引入消息中间件解耦 四 利用消息中间件削峰填谷 五 手动流量开关配合数据库运维 六 支持多系统同时订阅数据 七 系统解耦
  • Session实现用户登录(九)

    一 创建登录页面
  • 【详细】阿里云OSS上传文件

    原文链接 https www fearlazy com index php post 319 html 1 登录OSS管理控制台 点此快速传送 登录后点击右上角的控制台 若之前没进入过OSS管理控制台 可以在中间上方进行搜索OSS 点击控制
  • mysql输入密码后闪退问题

    有时候进入mysql明明密码输入对了 但无论无何都会闪退 就类似于密码错误退出控制台的效果 导致进不来数据库 更别说开发了 解决办法 先停止mysql服务 不懂停止 找到你的mysq安装目录 里面有个my ini配置文件 编辑它 打不开 试
  • 自然语言处理的应用,自然语言处理就业前景

    自然语言处理是一项多领域交叉的技术 具有广泛的应用和就业前景 以下是一些主要的应用场景 1 智能客服 利用自然语言处理技术实现智能问答系统 自动回复 机器人客服等服务 提高客户满意度和效率 2 搜索引擎优化 自然语言处理可以帮助搜索引擎更好
  • 调试osgEarth(三十三)分页瓦片卸载器子节点的作用--(2)删除活跃的瓦片节点

    感谢 hankern 学习链接在https blog csdn net hankern article details 85407803 很遗憾 这个版本不能这么用了 unloadChildren 注释掉了 也没有扫描器了 断点设置在tra
  • 豪斯曼检验matlab,豪斯曼检验、空间面板模型选择等问题

    各位大神 本人空间计量小白 最近看了姜磊老师的书 自己也进行了实证分析 有一些问题不太懂 1 空间面板数据模型分为混合空间面板数据模型 空间固定效应空间面板数据模型 时间固定效应空间面板模型 空间和时间双固定效应的空间面板数据模型 随机效应
  • (小白嵌入式)基于S5pv210的arm初级驱动开发之环境安装(一)

    一 安装环境需要准备的资源 linux 3 0 8 tar bz2 liunx内核代码 rootfs fs210 tgz 文件系统 toolchain 4 5 1 farsight tar bz2 交叉编译工具 zImage308 内核镜像
  • Java基础--java注解

    一 什么是java注解 一 概念 1 java注解 说明程序的 是给计算机看的 也叫元数据 一种代码级别的说明 又叫java标注 是jdk1 5引入的一种注释机制 与类 接口 枚举是在同一个层次 可以声明在包 类 字段 局部变量里面 方法参