java之反射机制和注解(更新中......)

news/2025/3/12 6:14:02/

Reflect在文档中的位置:

在这里插入图片描述
文档链接:https://docs.oracle.com/javase/8/docs/api/index.html
用于获取类或对象的反射信息。

常用的反射机制重要的类:

java.lang.Class:整个字节码,代表一个类型。包含了以下三块内容;
java.lang.reflect.Nethod:method的字节码;
java.lang.reflect.Constructor:构造方法的字节码;
java.lang.reflect.Field:属性相关的字节码。注意与local_variable的区分。

  • 作用:
    可以通过反射机制,实现OCP开闭原则,即对扩展开发,对修改关闭。框架中常用,让程序更加灵活
  • 获取Class的三种方法
    静态方法:
    在这里插入图片描述

forName()的执行,会加载该类。即该类的静态代码块会执行一次。

比如,获取String的字节码(异常处理,ClassNotFoundException):

Class strCls = Class.forName("java.lang.String");

另外两种获取Class的方法:

// 通过实例方法getClass()获取(getClass是Object的方法)
Class strCls = "abc".getClass();
// 通过静态熟悉获取
Class strCls = String.classClass intCls = int.class;
Class dateCls = Date.class;
Class doubleCls = double.class;
// ...

Class常用方法:

methodsdescribe
newInstance创建一个该类型的实例对象(Creates a new instance of the class represented by this Class object.)
getFields获取该类中所有public的属性
getDeclaredFields获取该类中所有的属性
getDeclaredMethods获取类的方法:实例方法、静态方法等
getDeclaredMethod获取类的指定方法
getDeclaredConstructors获取构造方法
getDeclaredConstructor获取指定参数的构造方法

Field常用方法:

methodsdescribe
getModifiers获取当前属性的修饰符类型的int值
getType获取当前属性的类型
getName获取当前属性的key
set(obj, attrStr)设置当前类实例属性的值。eg,obj为当前类的实例对象
get(obj)获取当前类实例属性的值

Modifier常用方法:

methodsdescribe
toString把修饰符类型的int值转换为字符串。default-0、public-1、private-2、protected-4、static-8、final-16

Method常用方法:

methodsdescribe
invoke(obj, args)执行当前的方法,返回值等同于被反射的调用方法的返回值

invoke在被调用时,要注意剩余参数的匹配。paramterType[] -> new Type[] {xxx, yyy}

Constructor常用方法:

methodsdescribe
newInstance(Object… params)执行指定的构造方法,创建对象
  • 注解Annotation
    一种引用类型,和普通的类相似,也是生成xxx.class文件,并且可以互相引用。比如注解也可以作用于注解上。一般用于校验等,具体用法待后续补充

元注解:Target、Retention

Target:注解作用于那些类型上
Retention:注解作用在那个阶段上。源码、Class、Class + 反射机制发现

JDK内置注解:

Deprecated:表示当时被注解的目标已过时
Override: 只能用在方法上,编译阶段,和运行阶段无关. 重写父类的方法。标识性注解


http://www.ppmy.cn/news/327428.html

相关文章

虚拟环境创建、配置及激活

虚拟环境创建、配置及激活 前言 一、虚拟环境是什么? 虚拟环境(Virtual Environment)是在计算机上使用特定版本的编程语言(如python 3.9)和其所需包及依赖项的一种方法(如pandas 2.4),它可以被看作是一个隔…

k8s-Pod

Pod 简述 在k8s中,其最小的调度单元便是Pod了,一个Pod里面可以包含一个或多个容器(Docker 容器等)。或者说,Pod其实是由一组应用容器构成,并包含了容器的共有环境和资源约束。 Pod的配置管理 应用部署的一个最佳实践&#xff…

OpenGL 光照贴图

1.简介 现实世界中的物体通常并不只包含有一种材质,而是由多种材质所组成。想想一辆汽车:它的外壳非常有光泽,车窗会部分反射周围的环境,轮胎不会那么有光泽,所以它没有镜面高光,轮毂非常闪亮。 2.漫反射…

【Matlab代码实现】电动过滤器:LPF和HPF、模拟调制:调幅和调频、WiFi、蓝牙和蜂窝网络的容量分析.....

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Python全栈开发工程师 第一模块作业

1.【编程题】100分 第一模块作业: 1- 学习计算机运行原理,绘制一张python代码从输入电脑,到处理,到输出结果的整个流程图 2- 构建自己的python编程环境,整个过程做笔记,把截图放到word里提交 3- 写下自己学…

利用opencv怎样旋转一幅图像

图像旋转是指图像按照某个位置转动一定角度的过程,旋转中图像仍保持着原始尺寸。图像旋转后图像的水平对称轴、垂直对称轴以及中心坐标原点可能都会发生变换,因此需要对图像旋转中的坐标进行相应的转换 图像坐标构成 解释一下上面的各个步骤 由于图像坐…

无线路由器的dhcp服务器是什么,路由器dhcp是什么 路由器dhcp服务器如何设置

DHCP是企业网络最为常见的一种客户端自动获取IP地址的方式。虽然DHCP有缺点,但利大于弊,DHCP能够有效节省网络管理的时间。下面给大家分享无线路由器的DHCP设置方法,以Mercury水星无线路由器MW300R为例。操作方法 01 进入路由器管理界面。 进…

路由器的无线桥接

路由器无线桥接 新款的路由器基本直接一键就可以桥接 1、概念了解 WAN口、LAN口区别 俩个概念:主路由器、副路由器 主路由器是指WAN口插上网线的那个路由器,WAN就是接收网线网络的那个路由器插口,而LAN口是用来输送网络的。 平常使用路由…