注解和反射

Java:注解和反射 文章目录 学习视频来自于:秦疆(遇见狂神说)Bilibili地址 他的自学网站:kuangstudy 唯有热爱,能抵岁月漫长 阅读详情

目录标题

注解

所有的框架底层实现原理就是注解和反射
例如 mybatis和Springboot
注解:可以给人看 也能给程序看


在这里插入图片描述
在这里插入图片描述

什么是内置注解

注解一定要用@开头

在这里插入图片描述

注解@Override


在这里插入图片描述
注解@Deprecated
不推荐程序员使用 但是可以使用 或者存在更好的方式


在这里插入图片描述

@SuppressWarnings 镇压警告


在这里插入图片描述

元注解

元注解的作业就是负责注解其他注解

在这里插入图片描述

自定义注解

在这里插入图片描述

重点:自定义注解 一定要有 @ 符号
如果只有 interface 就不是注解 这就是一个接口


在这里插入图片描述

反射机制

反射机制非常重要

在这里插入图片描述

动态语言:通俗来讲就是在运行时代码可以根据某些条件改变自身结构
静态语言:与动态语言相对的 运行时结构不可变的语言就是静态语言



Java不是动态语言,但Java可以称之为“准动态语言”因为Java有一定的动态性,
我们可以利用反射机制获得类似动态语言的特性。Java的动态性让编程的时候更加灵活!
所以这是很强大的 但是也增加了 不安全性


在这里插入图片描述
Reflection (反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。



在这里插入图片描述

获得反射对象

在这里插入图片描述

一个类在内存中只有一个Class对象
一个类被加载后 类的整个结构都会被封装到CLass对象中


在这里插入图片描述

得到Class类的几种方式

重点:
一个加载的类在 JVM 中只会有一个Class示例
每个类的实例都会记得自己是由哪个Class实例所生成
Class类是Reflection的根源, 针对任何你想动态加载,运行的类 ,
唯有先获得相应的Class对象



在这里插入图片描述

所有类型的Class对象

只要元素类型与维度一样 就是同一个Class
int [] a=new int[10];
int [] b=new int[100];
System.out.println(a.getClass().hashCode());
System.out.println(b.getClass().hashCode());



在这里插入图片描述

Java类内存分析

在这里插入图片描述

加载:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后生成一个代表这个类的java.lang.Class对象.



在这里插入图片描述

类的加载过程

重点 类的加载过程


在这里插入图片描述

类加载步骤解释:
1 先加载到内存堆里面 会产生一个类对应的Class对象
2 再后来 进行链接到 栈区 , 在栈区main方法中结束 会得到m=0
3 再后来 进行初始化方法clinit方法 寻找 A类的对象
如下得到 m值为100 再返回到 栈区中赋值给m



在这里插入图片描述

分析类初始化

重点!!!
类的主动引用(一 定会发生类的初始化)
包括以下几类:
当虚拟机启动,先初始化main方法所在的类
new 一个类的对象
调用类的静态成员(除了final常量)和静态方法
使用java.lang.reflect包的方法对类进行反射调用
当初始化 一个类,如果其父类没有被初始化,则先会初始化它的父类



类的被动引用(不会发生类的初始化)
包括以下几类:
当访问一个静态城时,只有真正声明这个域的类才会被初始化。如:当通过子类引用父类的静态变量,不会导致子类初始化
通过数组定义类引用,不会触发此类的初始化
引用常量不会触发此类的初始化(常量在链接阶段就存入调用类的常量池中了)



在这里插入图片描述

产生类的引用的方法的输出结果为下面的第二张图
而不会产生类的引用的方法的输出结果 我放在了图中的注释中!!!



在这里插入图片描述

类加载器(面试会问)

在这里插入图片描述

创建运行时类的对象

获取类的运行时结构

在这里插入图片描述

通过反射 Class对象来获取它的包名和类名



在这里插入图片描述

有了Class对象 能做什么

动态的创建对象 通过反射


在这里插入图片描述

性能对比分析

在这里插入图片描述

所以可以看出 如果反射调用比较多的时候可以关闭这个检测



获取泛型信息

generic 泛型
Paramnter 参数



在这里插入图片描述

获取注解信息

在这里插入图片描述

总结

首先讲解 注解


在这里插入图片描述

接下来讲解反射机制


在这里插入图片描述

在这里插入图片描述

再接下来


在这里插入图片描述

Cadence Spectre仿真保姆级教程:从DC/AC到PSS/PV,手把手教你搞定模拟电路分析 作为业界标准的Cadence Spectre仿真器,以其精确的算法和丰富的分析类型,成为每个模拟IC工程师必须掌握的利器。本文将带你从零开始,系统掌握Spectre仿真的核心技能,从最基础的DC工作点分析到复杂的PSS相位噪声仿真,每个步骤都配有详细的操作指导和实用技巧。记得我第一次使用Spectre仿真一个简单的两级运放时,花了整整三天时间才得到正确的AC响应曲线。过程中踩过的坑、浪费的时间,现在想来都是宝贵的学习资源。与传统的AC分析不同,STB分析可以在不破坏环路的情况下评估稳定性。 阅读详情

相关推荐

CentOS7下Node.js v20+安装与常见依赖库问题解决指南

本文详细介绍了在CentOS7系统下安装Node.js v20+的完整流程及常见依赖库问题的解决方案。通过升级glibc到2.28+、配置环境变量以及处理libstdc++版本问题,帮助开发者顺利在老旧系统上部署最新版Node.js,提升开发效率。

weixin_30689307的博客 157

【反射】注解和反射

不是程序本身,单可以对程序做出解释可以被其他程序读取(比如编译器)格式:“@注释名字”,还可以添加一些参数值,比如:@SuppressWaenings(value="unchecked")使用:package,class,methed,filed等上面,相当于给他们添加了额外的辅助信息,可通过反射实现访问//注解可以显示赋值,如果没有默认值,就必须给其赋值@MyAnnotation02(name = "老王",age = 1,id = 1)//注解有默认值,可不写参数。

菜鸟的学习笔记 1430

vcpkg管理OpenCASCADE的5个高效技巧:从多版本共存到离线部署

本文详细介绍了使用vcpkg高效管理OpenCASCADE的5个实用技巧,包括多版本共存、性能优化、团队共享、CI/CD集成和离线部署。通过自动配置和版本控制,vcpkg显著简化了OpenCASCADE的开发环境管理,特别适合工业级CAD开发场景。

rain6的博客 191

Java注解和反射

不是程序本身,可以对程序作出解释。(这一点和注释(comment)没什么区别)可以被其他程序(比如:编译器等)读取定义在java.lang包下@Override, 重写@Deprecated, 已过时的,不鼓励使用@SuppressWarnings,用来抑制编译时的警告信息负责注解其他注解,它们被用来提供对其他annotation类型作说明@Target,用于描述注解的使用范围(即被描述的注解可以用在什么地方)

layman4444的博客 1403

超详细!动态规划详解分析(典型例题分析和对比,附源码)

为啥要使用动态规划?什么时候使用动态规划?以下是我的一些理解和心得,如果你感兴趣,就接着往下看吧。 对您有帮助的话记得给我点个赞哟! 动态规划的基本思想 动态规划(Dynamic Programming,DP)算法通常用于求解某种具有最优性质的问题。在这类问题中,可能会有许多可行解,每一个解都对应一个值,我们希望找到具有最优值的解。 动态规划算法与分治法类似,其基本思想也是将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解中 得到原有问题的解。与分治法不同的是,动态规划经分解后得到的子问题

qq_44398094的博客 8万+

手把手教你用S7-PLCSIM Advanced V3.0搭建PLC仿真测试环境(含WinPcap避坑指南)

本文详细介绍了如何使用西门子S7-PLCSIM Advanced V3.0搭建PLC仿真测试环境,包括WinPcap 4.1.3驱动的安装避坑指南。从环境准备、软件安装到配置调试,提供了一套完整的解决方案,帮助工程师和教学人员快速构建可靠的PLC仿真环境,解决常见的报错问题。

weixin_30879169的博客 643

【Java】反射和注解

本文详细概括了反射机制和注解在实际开发中的作用,并且还包括了ResourceBundle读取配置文件的详细操作,以及枚举

Answer的博客 1260

Java与OSG的梦幻联动:深入编译OpenSceneGraph的Java JNI桥梁,开启3D视觉盛宴的奇幻之旅

🔥关注墨瑾轩,带你探索编程的奥秘!🚀🔥超萌技术攻略,轻松晋级编程高手🚀🔥技术宝库已备好,就等你来挖掘🚀🔥订阅墨瑾轩,智趣学习不孤单🚀🔥即刻启航,编程之旅更有趣🚀在编译OpenSceneGraph (OSG) 的Java版本时,首先需要了解OSG本身是一个主要用于3D图形和视觉仿真的开源库,它主要支持C++。然而,OSG 也支持通过JNI(Java Native Interface)与Java集成,这允许Java程序调用OSG的C++库。

java专栏 871

Java 注解和反射

注解是 JDK 5.0 引入的新技术。注解是不是程序本身,但可以对程序做出解释;可以被其他程序(比如编译器)读取。注解是以 “@注解名” 在代码中存在,还可以添加一些参数,例如 @SuppressWarnings(value=“ubchecked”)。可以加在 package、class、method、field 等上面,相当于给他们添加额外的信息;我么可以通过反射机制编程实现对这些元数据的访问。使用@interface自定义注解时,自动继承了接口。@interface用来声明一个注解;

kezhou的博客 1087

【PINN高级教程】 第1讲:函数空间与逼近理论

结论:在解决偏微分方程(PDE)时,解往往属于某个 Sobolev 空间 HsHs,其正则性受限于 PDE 的系数与边界条件;而 PINN 在训练过程中实际上是在逼近 Barron 空间中的函数。由于 Barron 空间允许高频信息的压缩,PINN 可以在参数规模较小的情况下捕捉到 PDE 解所需的细节,但其正则性保证仍然比 Sobolev 更弱。因此,在设计 PINN 时,需要通过正则化或网络结构(如残差连接、归一化层)来“逼近”Sobolev 正则性。

u012133341的博客 239

电磁场仿真软件:CST Studio Suite_(25).案例分析与实践

在电磁场仿真中,材料属性的设置至关重要。通过API,您可以轻松地设置和修改材料属性,以适应不同的仿真需求。通过以上案例分析和实践,您已经学会了如何在CST Studio Suite中进行二次开发。自动化仿真流程:批量创建和运行仿真项目、优化设计参数、生成报告。自定义仿真设置:设置材料属性、边界条件和激励源。数据处理与分析:读取仿真结果、数据可视化和数据导出。高级脚本开发:多线程仿真、集成机器学习和云仿真。这些技能将帮助您更高效地进行电磁场仿真,提高设计质量和工作效率。

kkchenjj的博客 1387

狂神说注解和反射笔记整理

doris

doris的博客 4889

NTscan扫描工具

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

Java学习—注解和反射

Java学习之注解和反射

qq_53302267的博客 1540

visio安装包

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

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java 反射和注解

示例12】自定义注解}//如果只有一个配置参数,一般命名为value}@MyAnnoation(id=5,name="张三",scoreArr={78,89,34})}}}定义注解的关键字是@interface自定义注解中可以定义多个配置参数,不是成员方法,不是成员变量;说明参数的名称,以及参数值的类型如果只有一个配置参数,一般命名为value如果配置参数是value,并且只有一个配置参数,value可以省略。...

鑫阳的博客 1665

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

java注解和反射

使用//这里不是方法,而是注解的值 在使用时@AnnottationName(name=" ");value可以缺省,,,动态语言:**是一类运行时可以改变其结构的语言,如新的函数,对象,甚至代码可以被引进主要有Object,C#,javaScript,php,python等静态语言:与动态语相比,运行时结构不可变的就是静态语言,如java,,c++,c;java不是动态语言,但是java可以被称为准动态语言,有一定的动态性。

qq_73240755的博客 1158

反射和注解

注解和反射 文章目录注解和反射1、注解1.1、内置注解1.2、元注解1.3、自定义注解2、反射2.1、主要API2.2、Class类2.3、类加载器2.4、通过反射获取对象 1、注解 1.1、内置注解 //重写的注解 @Override //不推荐程序员使用,但是可以使用,或者存在更好的方式,(遗弃方法) @Deprecated //抑制编译时的警告,参数:all、unchecked、 value={"unchecked","deprecation"} @SuppressWarnings (参数) 1

weixin_44706491的博客 279

java注解和反射的应用

前言: 注解和反射经常结合在一起使用,在很多框架的代码中都能看到他们结合使用的影子 所以要想成为一个架构师,想要编写自己的框架,一定要能熟练的使用注解和反射。 注解的概念 注解在我看来就是一个标签,用来标记所修饰的东西,而在程序中,用到这个东西时,可以通过获取他的注解,也就是标签,来进行个性化操作。可以简化初始化时的工作,而把原本初始化做的工作放到业务处理中,借助注解去做,这样极大的提高了编程的...

KKALL1314的博客 2473

注解和反射的认识

注解和反射 注解 什么是注解 Annottion 作用:不是程序本身,可以对程序做出解释 。。可以被其他程序读取(比如:编译器等) Annottion 格式;注解是以“@注释名”在代码中存在的,还可以添加一些参数值: @SuppressWarnings(value = "unchecked") Annottion 使用;可以附加在package ,class, method,filed 等上面,相当于添加了额外的辅助信息, 我们还可以通过反射机制编程实现对这些元数据的访问 public class Ma

qq_45960397的博客 167

注解和反射(之一:什么是注解和反射)

注解和反射(之一:什么是注解和反射) 一、注解 注解入门 Annotation是从JDK5.0开始引入的新技术. Annotation的作用: 不是程序本身,可以对程序作出解释.(这一点和注释(comment)没什么区别) 可以被其他程序(比如:编译器等)读取. Annotation的格式: 注解是以"@注释名"在代码中存在的,还可以添加一些参数值﹐例如:@SuppressWarnings(value=“unchecked”). Annotation在哪里使用? 可以附加在package ,

qq_54343969的博客 401
上一篇: IO流{覆盖和追加 Java复制文件 未知目录不存在 字符编码 字符输入流 字符输出流 一行代码复制文本}(二)
下一篇: HTML详解
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值