全面解析Java注解

Java元注解和注解的解析 在使用注解之前,需要了解:一、什么是注解?二、注解是如何产生作用的?而元注解是一个很好的切入点 元注解的源码结构   从java.lang.annotation包截图看,一共定义了6个注解: @Document @Target @Retention @Inherited @Native @Repeatable 其中前4个是元注解 元注解的定义 元注解负责注解自定义注解... 阅读详情

全面解析Java注解

概念

  • Java提供了一种源程序中的元素关联任何信息和任何元数据的途径和方法

注解的分类

注解的分类

  1. 源码注解:注解只在源码中存在,编译成.class文件后就不存在了
  2. 编译时注解:注解在源码和.class文件中都存在
  3. 运行时注解:在运行阶段还起作用,甚至会影响运行逻辑

自定义注解

@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Description {
    String desc();
    String author();
    int age() default 18;
}
  1. 上面的自定义注解使用@interafce关键字定义注解
  2. 成员函数没有参数,没有异常声明
  3. 可以用default为成员指定一个默认值
  4. 成员的类型是受限的,合法的类型包括原始类型以及String,Class,Annotation,Enumeration
  5. 如果注解直邮一个成员,则该成员必须取名为vlaue(),在使用的时候可以忽略成员名和赋值号(=)
  6. 注解类可以没有成员,没有成员的注解称为标识注解

    • 上面自定义注解的前四行就是元注解
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
  1. 第一行表示注解的作用域
  2. 第二行表示声明周期
  3. 第三行表示是否子类继承,如果添加这句话说明子类的注解中将包含且只包含该类的类注解
  4. 第四行表示生成javadoc的时候会产生该注解

使用自定义注解

  • 使用自定义注解的语法:
    • @<注解名>(<成员名1>=<成员值1>,<成员名2>=<成员值2>,...)
    @Description(desc="I am SuperMan",author="Jacob",age=18)
    public String eyeColor(){
        return "red";
    }

解析注解

  • 概念:通过反射来获取类、函数或者成员上的运行时注解信息,从而实现动态控制程序运行的逻辑
package com.coderbean;


import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

/**
 * Created by Chang on 16/1/3.
 */
public class ParseAnn {
    public static void main(String[] args) {
        //1.使用类加载器加载类
        try {
            Class c = Class.forName("com.coderbean.Child");

            //2.找到类上面的注解
             if(c.isAnnotationPresent(Description.class)){
                 //3.拿到注解治理
                 Description description = (Description)c.getAnnotation(Description.class);
                 System.out.println(description.value());
             }

            //找到方法上的注解
            Method[] methods = c.getMethods();
            for(Method method:methods){
                if(method.isAnnotationPresent(Description.class)){
                    Description description = (Description)method.getAnnotation(Description.class);
                    System.out.println(description.value());
                }
            }
            //另外一种解析方法
            for(Method method:methods){
                Annotation[] annotations = method.getAnnotations();
                for(Annotation annotation:annotations){
                    if(annotation instanceof Description){
                        Description description = (Description)annotation;
                        System.out.println(description.value());
                    }
                }
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}
物理机centos7系统重启后直接进入dracut Warning: /dev/centos/root does not exist Warning: /dev/mapper/centos-root does not exist 在shell命令行执行以下: dracut:/# lvm vgscan dracut:/# lvm vgchange -ay dracut:/# exit 之后可以正常进入系统(测试正常)。 但是重启之后依然会进入dracut模式,永久解决如下: 查看kernel文件 [root@ecs ~]# ls -ltrh /boot 阅读详情

相关推荐

Carsim和Matlab/Simulink联合仿真时Carsim匹配不到Matlab的解决方法

      本人使用Carsim和Matlab/Simulink联合仿真做过用机器学习方法解决ACC和简单换道的仿真,曾将8.02 2016 2018三个版本Carsim反复安装N次,有相同方向的同学或安装过程遇到问题的同学可以加本人qq505625869一起交流经验心得。 一.前言       Carsim是一款很好的联合仿真软件,使用Carsim,可以避免搭建很多非常复杂的动力学模型

Kaikai_Liao的博客 8766

Java 内部类

内部类(Nested Class),嵌套类。内部类介绍 静态内部类 非静态内部类 普通内部类(也称为:成员内部类) 在一个类(外部类)中直接定义的内部类 匿名内部类 方法内部类 在一个方法(外部类的方法)或代码块中定义的内部类 内部类仍然是一个独立的类,在编译之后,内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和 $ 符号。此外,内部类可以使用修饰符(public, prot

张博的Blog 424

[漏洞利用]利用五次Shift越权破解win7\win10开机密码

注:第一个学习和接触的Windows漏洞 文章目录本机实验环境前置知识漏洞原理漏洞介绍漏洞验证解决方法基本流程介绍详细步骤截图 本机实验环境 虚拟机:VMware Workstation 14 pro 操作系统:Windows10 前置知识 1、cmd工具路径 c:\windows\system32\cmd,按五次shift默认调用同目录下sethc文件,其路径为“c:\windows\system32\sethc.exe” 2、用户/账户密码存储位置 c:\windows\system32\config\

Y4tacker的博客 2万+

Java注解之解析注解

在《Java注解之基本语法》中我们详细说明了Java中注解的基本语法,也通过一个简单的例子演示了一个简单的注解是怎么定义和使用的。我们知道,在实际的业务开发中,简单的会这点东西是远远不够的。在实际开发中我们定义的注解一般会有实际的逻辑意义,可以在运行时改变程序的执行逻辑,下面就接上上一篇文章讲解在Java中解析注解。这里主要分为两个部分进行讲解:类注解解析、方法注解解析。 1. 类注解解析 类...

I_LV_XJ的博客 970

若依RuoYi文件上传漏洞实战:如何安全配置/profile/upload路径(附避坑指南)

本文深入解析若依RuoYi框架中/profile/upload路径的文件上传漏洞,提供详细的安全配置方案和实战指南。通过权限修正、输入验证强化和存储隔离等多层防御策略,有效防范未授权访问和恶意文件上传风险,保障系统安全。

pink的博客 778

机器学习实战1-四种算法对比对客户信用卡还款情况进行预测与模型评估

大家好,我是微学AI,今天给大家带来一个机器学习实战案例:利用机器学习的四种算法对比对客户信用卡还款情况进行分类。信用卡又叫贷记卡,是由商业银行或信用卡公司对信用合格的消费者发行的信用证明。现在的年轻人,特别是80后,90后甚至00后到喜欢超前消费,每个人名下多多少少都有至少一张信用卡,有些人由于过度超前消费,导致下个月无法还款导致的逾期,这样会对个人征信产生影响,今天我们就来分析分析具有哪些特性的人会有信用卡逾期的可能。

微学AI的博客 4710

【Java 注解】自定义注解 ( 注解解析 )

一、定义注解、 二、使用注解、 三、解析注解、 四、通过注解对象获取注解属性的原理、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 2186

北斗导航 | raPPPid软件功能模块详解

raPPPid(Rapid Precise Point Positioning with integer ambiguity resolution,快速精密单点定位与整周模糊度解算)是由维也纳工业大学(TU Wien)大地测量与地理信息系开发的MATLAB开源PPP软件包。它是VieVS(Vienna VLBI and Satellite Software,维也纳VLBI与卫星软件)的PPP模块,由Marcus Franz Glaner和Robert Weber主导开发。

尘世冰封的专栏 584

java注解全面解析

推荐阅读:  我的优快云  我的博客园  QQ群:704621321  我的个人博客 一。全面解析Java注解 1.为什么学习Java注解?学习Java注解有何好处?学完能做什么? (1)能·读懂别人写的代码,特别是框架相关的代码 (2)让编程更加简洁,代码更加清晰 (3)让别人高看一眼 2.Java注解概念 Java提供了一种源程序中的元素任...

爱上游戏开发 2659

【WRF安装】WRF编译错误:problems building executables look for error in the build log

WRF编译错误:problems building executables look for error in the build log

WW、forever的博客 752

SPSS 多重共线性问题:编程解决方案

多重共线性会导致回归模型的不稳定性,使得估计的回归系数失去解释力,降低模型的准确性和可靠性。通过执行这些代码,你将能够计算和查看VIF和CI的结果,并确定是否存在多重共线性问题。上述代码执行了一个回归分析,其中A是我们感兴趣的因变量,B、C、D和E是我们要检查的自变量。接下来,我们将执行多重共线性的检测。通过执行上述代码,你将能够看到每个自变量的VIF和CI值,以及预先设置的阈值。上述代码将计算VIF和CI的值,并将结果写入指定路径的结果文件中。接下来,我们可以使用以下代码来计算和显示VIF和CI的值。

CyberGenius的博客 1426

Java注解的解析

又比如,要解析成员方法上的注解,则应该获取到该成员方法的Method对象,再通过Method对象解析其上面的注解。比如要解析类上面的注解,则应该先获取该类的Class对象,再通过Class对象解析其上面的注解。定义一个类叫Demo:在类中定义一个go方法,并在该类和其他方法上使用MyTest注解。就是判断类上、方法上、成员变量上是否存在注解,并把注解里的内容解析出来。定义一个AnnotationTest测试类,解析Demo类中的全部注解。主要思想:要解析谁上面的注解,就应该先拿到谁。

m0_73592039的博客 938

Exploring Automated Distractor Generation for Math Multiple-choice Questions via Large Language Mode

多项选择题(MCQ)在几乎所有级别的教育中都无处不在,因为它们易于管理、评分,并且是评估和实践中可靠的格式。MCQ最重要的方面之一是干扰因素,即旨在针对真实学生常见错误或误解的不正确选项。迄今为止,对于教师和学习内容设计师来说,制作高质量的干扰物的任务在很大程度上仍然是一个劳动和时间密集型的过程,其可扩展性有限。在这项工作中,我们研究了数学MCQ领域的自动干扰物生成任务,并探索了从上下文学习到微调的各种基于大型语言模型(LLM)的方法。

c_cpp_csharp的专栏 317

java注解解析

阅读目录 一、概念 二、Java中的常见注解 三、注解的分类 四、自定义注解 五、注解的项目实战 六、注解总结 为什么学习注解? 学习注解有什么好处? 学完能做什么? 答:1. 能够读懂别人写的代码,特别是框架相关的代码;   2. 让编程更加简洁,代码更加清晰;   3. 让别人高看一眼。 spring、mybatis使用了大量的注解,会用注解不是目的,会使用自定义注解才...

417

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java-注解解析

Java-注解 文章目录Java-注解一、定义1.1 作用二、预定义注解三、自定义注解3.1 格式3.2 本质3.3 注解内的属性3.4 元注解四、注解解析 一、定义 注解(Annotation),也叫元数据。一种代码级别的说明。JDK1.5之后引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。 1.1 作用 ①编写文档:通过代码里标识的注解生成文档【生成文档doc文档】 ②代码分析:通过代码里标识的注解对代码进行分析

你的博客 4027

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

java--最全注解解析

java--最全注解解析注解标准注解元注解Target 范围Retention 声明周期Documented 说明文档Inherited 传播注解元素注解元素的值注解元素的默认名称注解不支持继承注解解析器实例--定义注解注解类构造方法属性方法参数变量实例--解析注解注解类构造方法属性方法参数变量 github地址: https://github.com/a18792721831/studyjdk.git model: 先来一张图总览: 注解 Annotation(注解)是 Java 提供的一种对元程序中

a18792721831的博客 540

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

注解报错_java注解全面解析

>推荐阅读: - 我的优快云 - 我的博客园 - QQ群:704621321 - 我的个人博客一。全面解析Java注解1.为什么学习Java注解?学习Java注解有何好处?学完能做什么?(1)能·读懂别人写的代码,特别是框架相关的代码(2)让编程更加简洁,代码更加清晰(3)让别人高看一眼2.Java注解概念Java提供了一种源程序中的元素任何信息和任何元数据的途径和方法3.Java...

weixin_34846784的博客 121

全面解析java注解

相信有过编程经验的人都见过注解这种东西,也许像我一样,会用、熟练之后,也就一直放那不管了。但是有没有一天突然想到,注解是个什么东西,如果你想到了,那么恭喜你,恭喜你想到了。不论多么复杂的框架、多么复杂的代码、无非是封装、继承、反射、泛型。但是,注解这种东西,是完全独立于java正常体系之外的东西,所以今天在这里一探究竟。 1.java常用注解:@Override(覆盖,覆写),@Deprecat...

weixin_34018202的博客 84

java中注解的解析_【Java】中的注解与注解解析器

/*** 该注解描述了作用范围* java RetentionPolicy.SOURCE* java+class RetentionPolicy.CLASS* java+class+jvm RetentionPolicy.RUNTIME*/@Retention(RetentionPolicy.RUNTIME)/*** 该注解既能在类上也能在方法上...

weixin_39546312的博客 209

Java注解(Annotation)详解(三)——解析注解

(三)解析注解

添仔哥哥 8908

Java 注解入门 元注解 注解解析 kaki的博客

Java 注解 注解解析 kaki的博客 1. 注解的概述 注解是JDK1.5的新特性。 注解相当⼀一种标记,是类的组成部分,可以给类携带⼀一些额外的信息。 标记(注解)可以加在包,类,字段,⽅方法,⽅方法参数以及局部变量量上。 注解是给编译器器或JVM看的,编译器器或JVM可以根据注解来完成对应的功能。 注解 (Annotation) 相当于⼀一种标记,在程序中加⼊...

qq_44988088的博客 490

Java中注解的解析,得到注解的属性值,并调用注解标记的方法

代码: import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class MyAnTest { @MyTest(name = "张飞") public void test01(){ System.out.println("自定义注解...

xilin6664的博客 3621

Java 自定义注解的实现与解析注解信息

文章目录一.自定义注解的格式二.自定义注解demo三. 注解与类的关系四. 解析注解的信息4.1 解析注解在类的信息4.2 解析注解在成员变量上的信息4.3 解析注解在方法上的信息 一.自定义注解的格式 注解由于都是给其他的类中使用的, 所以一般都定义为public 注解属性支持的类型 所有的基本数据类型 8个 String类型 Class类型 Enum 类型 Annotation类型 以上所有类型的数据 注解是不能直接去继承其他的注解的. 二.自定义注解demo 自定义一个人的描述注解 // 该注解

Java持续实践 709

java基础-注解定义和解析

java自定义注解的定义和使用,常用元注解,注解的解析。

weixin_50369190的博客 3641

JAVA自定义注解与解析

注解是一种提供便捷性的配置方法。其本质是一个继承于Annotation的普通接口,它需要有解析它的代码才可以起到作用。而解析的方法有两种,一种是编译时期的直接扫描,一种是运行时期的反射。

loongkingwhat的博客 417

Java反射解析自定义注解

注解与反射注解(Annotation)什么是注解?JDK内置的注解生成文档相关的注解@Override@Deprecated@SuppressWarnings元注解@Target@Retention@Documented@Inherited自定义注解 注解(Annotation) 什么是注解? 从JDK5.0开始,Java增加了对元数据(MetaData)的支持, 也就是Annotation(注解...

weixin_44176169的博客 600
上一篇: Java反射
下一篇: 浅析计算机网络(4)-建立连接
coderbean
博客等级 码龄11年 12粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值