Java中的注解和反射

news2024/9/30 13:16:03

注解 

在Java程序中,我们可以在很多地方看到注解,如一下情况:

 

 注解有检查和约束的作用

 内置注解 

当被@Deprecated注解修饰的方法被使用的时候,方法会被画上杠:

 

元注解 

当我们打开一个注解的时候,可以看到以下这些信息:

 

而上面这些注解就是元注解,在Java中,元注解有以下几个:

 

上面的@Target注解用来描述注解的使用范围,打开它的源码:

public enum ElementType {
    /** Class, interface (including annotation type), or enum declaration */
    TYPE,    

    /** Field declaration (includes enum constants) */
    FIELD,

    /** Method declaration */
    METHOD,

    /** Formal parameter declaration */
    PARAMETER,

    /** Constructor declaration */
    CONSTRUCTOR,

    /** Local variable declaration */
    LOCAL_VARIABLE,

    /** Annotation type declaration */
    ANNOTATION_TYPE,

    /** Package declaration */
    PACKAGE,

    /**
     * Type parameter declaration
     *
     * @since 1.8
     */
    TYPE_PARAMETER,

    /**
     * Use of a type
     *
     * @since 1.8
     */
    TYPE_USE
}

 它可以用在类、方法、属性、字段、构造器、本地变量、另一个注解、包、类型参数声明、类型使用上面。

@DocumentSpring Data MongoDB提供的一个注解,用于指定模型类型所对应的集合名称。@Document注解作用在类上,标记实体类为文档对象。@Documented注解表明这个注解应该被javadoc工具记录。在实际开发中,我们通常要在实体类上注明@Document。@Documented和@Deprecated注解长得有点像,但是@Documented只能用在注解上,如果一个注解被@Documented标注,那么被修饰的类在生成JavaDoc文档时会显示该注解。

自定义注解 

 

public class CustomAnnotation {
    @MyAnnotation
    public void testAnnotation(){
        
    }
    
}

@Target(ElementType.METHOD)
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation{
    
}

因为注解是有检查和约束作用的,当我将@MyAnnotation注解放在类上时就会报错,因为我定义的注解使用范围是在方法上面:

 反射

有关反射的详细信息可以去看我的这篇文章:(2条消息) 反射机制和类加载机制_反射加载类_咸鱼吐泡泡的博客-CSDN博客 

在理解反射之前先了解静态和动态语言:

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/485547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一份标准的软件测试方案模板

第一章 概述 ​ 软件的错误是不可避免的,所以必须经过严格的测试。通过对本软件的测试,尽可能的发现软件中的错误,借以减少系统内部各模块的逻辑,功能上的缺陷和错误,保证每个单元能正确地实现其预期的功能。检测和排…

ROS 视觉建图不显示点云

I 乐视摄像头找不到彩色输出(供参考) 1.安装依赖 sudo apt install ros-$ROS_DISTRO-rgbd-launch ros-$ROS_DISTRO-libuvc ros-$ROS_DISTRO-libuvc-camera ros-$ROS_DISTRO-libuvc-ros2.进入ROS摄像机目录 cd /home/wheeltec/wheeltec_robot/src/ros_…

[计算机图形学]动画与模拟:关键帧动画、质点弹簧系统、运动学与绑定(前瞻预习/复习回顾)

一、动画的简要概念 动画和语言一样,一开始都是作为传达信息的工具。什么是动画呢?简单的理解就是让画面变成“活的”,也就是让它们能够动起来,其次需要一定的美观。在图形学上,我们可以把动画理解为建模或者是几何的一…

1.1 n阶行列式子的定义

学习目标: 掌握n阶行列式的定义和计算方法,并能够解决相关的数学问题。 学习步骤: 学习n阶行列式的定义,需要一定的抽象思维能力和数学基础。 了解基本概念和性质:在学习n阶行列式之前,需要先了解行列式…

设计模式——工厂模式(简单工厂、工厂方法、抽象工厂)

是什么? 工厂模式的目的是将创建对象的具体过程隐藏起来,从而达到更高的灵活性 工厂模式分为:简单工厂模式、工厂方法模式、抽象工厂模式; 为什么? 在Java中,万物皆是对象,我们在使用的时候…

(8) 支持向量机(下)(模型评估指标、ROC曲线)

文章目录 1 二分类SVC的进阶1.1 参数C的理解进阶1.2 二分类SVC中的样本不均衡问题:重要参数class_weight 2 SVC的模型评估指标2.1 混淆矩阵2.1.1 模型整体效果:准确率2.1.2 捕捉少数类的艺术:精确度,召回率和F1 score2.1.3 判错多…

【fluent】axial、radial、tangentia的含义和区别,axial/radial/tangentia coordination表达的意义

Reference 本文主要参考fluent的官方文档。 ANSYS FLUENT 12.0 User’s Guide - 31.2 Velocity Reporting Options 笛卡尔坐标系——Cartesian coordinate system 不管什么坐标系,都要讲究维数。这个维数根据问题难度确定,对于3D问题需要用三维坐…

魔兽服务端编译部署NPCBots和 Al机器人模块教程

魔兽服务端编译部署NPCBots和 Al机器人模块教程 大家好,我是艾西。在平时自己一个人玩魔兽的时候是不是会比较无聊,因为游戏机制或副本难度自己一个人无法进行快乐的玩耍。今天艾西教大家编译部署NPCBots和 Al机器人模块,直接一个人玩魔兽也…

Python研究生组蓝桥杯(省二)参赛感受

为什么参加蓝桥杯? 今年是读研的第一年,看着我简历上的获奖经历“优秀学生干部”“优秀志愿者”“优秀毕业生”......大学四年,我竟然没有一次竞赛类的经历,也没有拿得出手的项目,我陷入了深深的焦虑。 听说蓝桥杯的…

FLstudio21支持中文语言及水果最新版本功能特点

水果的话,我用的版本是去年刚更新的FLstudio21,目前支持中文挺友好的,算很新的版本了。打开软件进入主界面,会看到如下图所示。FL Studio 21版不仅拥有非常多的音频编辑功能,而且这款软件还内置了丰富多样的插件&#…

云服务器部署python项目

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

每天一道算法练习题--Day19 第一章 --算法专题 --- ----------回溯

回溯 回溯是 DFS 中的一种技巧。回溯法采用 试错 的思想,它尝试分步的去解决一个问题。在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可…

创建线索二叉树

创建线索二叉树 一、创建线索二叉树一、案例1、前序线索二叉树2、中序线索二叉树3、后序线索二叉树 一、创建线索二叉树 现将某结点的空指针域指向该结点的前驱后继,定义规则如下: 若结点的左子树为空,则该结点的左孩子指针指向其前驱结点。…

【开源项目】Build your own X 构建自己的项目

【开源项目】Build your own X 构建自己的项目 简介 Build your own X 是一个精心收集了大量资源的项目指南,可以通过从头开始重新创建我们最喜爱的技术来掌握编程。 项目地址: https://github.com/codecrafters-io/build-your-own-x这些项目里的资源…

剑指 Offer II 052——展平二叉搜索树

文章目录 题目详情示例1示例二 方法一:中序遍历之后生成新的树Java完整代码实现 方法二:在中序遍历的过程中改变节点指向Java完整代码实现 题目详情 剑指 Offer II 052——展平二叉搜索树 给你一棵二叉搜索树,请 按中序遍历 将其重新排列为一…

Matlab2012a的图像处理工具箱的imshow函数

在处理图片文件时,除了使用matlab自带的image函数,还可以考虑用matlab的图像处理工具箱。这个工具箱提供了imshow和imtool两个函数,可实现图片的显示。 这两个函数都支持Handle Graphics体系结构,它们可创建图像对象,…

【AWS入门】AWS CICD

目录 一 .TASK二. 环境准备IAM创建存储库ec2-repoec2-wp 三. Code Deploy创建应用程序创建部署组创建管道部署后的ec2-wp 一 .TASK 创建2台EC2实例,一台名为「ec2-repo」,用作开发环境,将编写好的代码提交至repository(需安装git)&#xff0…

二十六、ISIS技术总结

文章目录 ISIS 概述一、路由协议总结1、路由优先级2、分类 二、ISIS 协议特点1、特点2、ISIS 路由器的种类 三、ISIS 配置1、基础配置2、network-entity含义3、router id 和系统id转换规则 四、ISIS 开销计算1、Narrow 模式2、Wide 模式 五、 ISIS 和 OSPF 的区别 ISIS 概述 I…

TortoiseGit提示No supported authentication methods available异常

TortoiseGit他属于git的客户端,可有可无,说白了就是将git命令给我们整理成了可直接操作的按钮。 本地代码是使用了SSH的方式去拉取的代码,但是通过TortoiseGit pull代码的时候发生了如下异常,而GitBash却可以正常使用。 TortoiseG…

机器学习技术-激活函数

激活函数 作用 f(*)称为激活函数或激励函数(Activation Function),激活函数的主要作用是完成数据的非线性变换,解决线性模型的表达、分类能力不足的问题;如果网络中都是线性变换,则多层网络可以通过矩阵变换&#xf…