Java中的反射机制

获取字节码文件对象的三种方式

 

 1,(常用)源代码阶段,Class.forName("全类名")

2,(传参)加载阶段 类名.class

3,(前提有对象)运行阶段 对象.getClass()


Java反射机制(动态获取类的信息)

         框架需要处理任意类,而框架只知道类的地址,就需要对不同的类进行创建对象,方法调用。

        框架通过反射机制,在只知道类地址的情况下,就可以操作类。 

        框架可以通过反射机制在写一套处理程序后,就可以达到以不变应万变。

        java的反射机制在运行状态中,可以动态获取任意类的信息,并且可以创建对象,还可以调用任意对象的方法和属性。这种动态获取,调用的机制称java反射机制。(反向使用类)

反向使用类的前提:获取Class字节码对象。

Class类中的方法

        constructor.setAccessible(true);//设置指定构造方法为允许访问   暴力反射:表示临时取消权限校验
        constructor.getModifiers();//获取构造方法的权限修饰符
        adminClass.getConstructor();//获取指定参数个数的公共构造方法(public)
        adminClass.getDeclaredConstructor();//获取指定参数个数的所有构造方法(包括私有)
        adminClass.getConstructors();//获取所有公共构造方法
        adminClass.getDeclaredAnnotations();//获取所有构造方法
        adminClass.getFields();//获取所有属性,返回的是一个Field类型的数组
        adminClass.getField("gender");//获取公共权限指定名称的属性
        adminClass.getDeclaredFields();//获取所有属性
        adminClass.getDeclaredField("gender");//获取指定属性名称的属性
        adminClass.getMethod("getAds");//获取指定公共方法
        adminClass.getMethods();//获取所有公共方法
        adminClass.getDeclaredMethod("getAccount");//获取指定方法
        adminClass.getDeclaredMethods();//获取所有方法
public class test3 {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
        Class adminClass = Class.forName("com.ffyc.mybatis.model.Admin");//获取Admin类的Class对象
        Constructor constructor=adminClass.getConstructor();//获取类的一个无参构造方法(公共的)
        Object obj=constructor.newInstance();//新建一个对象

        constructor = adminClass.getDeclaredConstructor(int.class);//获取有一个参数的构造方法(包括私有)
        constructor.setAccessible(true);//设置私有的为允许访问
        obj = constructor.newInstance(10);//新建一个对象
        System.out.println(obj.toString());
        System.out.println(adminClass.getDeclaredConstructors().length);//获取所有构造方法(包括私有)
    }
}

暴力反射:表示临时取消权限校验。

.setAccessible(true);

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mac使用brew搭建kafka集群

1. 第一步:单机搭建 单机搭建: 安装完后,默认自动安装对应版本zookeeper brew install kafka2.第二步:修改配置文件: 配置3个Kafka 第一个(使用默认配置) vi /opt/homebrew/etc/kafka/server.propertie…

相机标定:理论与实践

先讨论相机模型,说明投影关系的描述,介绍相机的内外参,最后完成标定。 一、内参含义 把需要标定的相机参数叫做内参(intrinsics matrix),它决定了物体的实际位置Q在成像平面上的投影位置q,如下…

Django 缓存:提升Web应用性能详解

在构建动态Web应用时,性能往往是重要的关注点。Django, 作为一个高级Python Web框架,提供了一套全面的缓存系统帮助开发者提升网站性能,降低服务器负载,并改善用户体验。本文将深入讨论Django缓存机制,并通过示例展示如…

windows安装linux双系统启动盘的制作与恢复

下载镜像 Index of /ubuntu-releases/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 制作启动盘 准备一个U盘,注意备份,启动盘的制作过程中是将ISO烧录到U盘中,会将U盘中的原内容覆盖掉在网上下载Win32DiskImager软件包烧录ISO…

详解Java中的重写和重载 | 动态绑定和静态绑定

目录 一.重载 二.重写 三.重载和重写的区别 一.重载 重载(overload),Java中为了提高编程效率,允许我们使用方法重载,具体体现在,对于多个方法,他们的方法名相同,但参数列表不同,我们则将这种…

不想努力了,有没有不用努力就能考上硕士的方法

今年,硕士研究生考试报考人数再次刷新了纪录,高达474万人次。 这些年考研一直在扩招,但是录取率却越来越低,内卷血腥程度可想而知! 2020年研究生报考人数341万,录取人数99.05万,录取率29.05%。…

Maven-依赖管理机制

一、背景和起源 依赖管理是Maven的一个核心功能。管理单个模块项目的依赖相对比较容易,但是如果是多模块项目或者有几百个模块的项目就是一个巨大的挑战。 如果手动构建项目,那么就先需要梳理各个模块pom中定义的依赖和版本,然后进行下载到本…

【MySQL】表的增删改查(强化)

作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《MySQL》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造&a…

物奇平台耳机宕机恢复功能实现

是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,群赠送语音信号处理降噪算法,蓝牙音频,DSP音频项目核心开发资料, 物奇平台耳机宕机恢复功能实现 一 需求与场景 1 使…

TortoiseSVN 状态图标不显示的两种解决办法

文章目录 TortoiseSVN 方式解决注册表方式解决 TortoiseSVN 方式解决 在桌面或者资源管理器中鼠标右键打开 TortoiseSVN 设置选择 Icon Overlays (图标覆盖)Status cache(状态缓存) 选择 ‘Shell’ 选择 Icon Overlays(图标覆盖)…

基于AI智能分析网关的智慧视频监控系统一站式解决方案

1、功能概述 TSINGEE智能分析网关EasyCVR智慧视频监控系统基于云-边-端一体化协同架构,可兼容多协议、多类型的设备接入,实现视频数据采集、海量视频汇聚与处理、按需调阅、全网分发、 告警消息推送、数据级联共享、AI智能分析接入等视频能力服务&#…

我敢打赌,这个架构你一定知道!

大家好,我是鱼皮。开发后端项目时,我们最常见的一种架构模式就是 分层架构 。 所谓的分层架构,就是把系统自上而下分为多个不同的层,每一层都有特定的功能和职责,且只和自己的直接上层与直接下层 “打交道”。 分层架…

MySQL 数据库表格创建、数据插入及获取插入的 ID:Python 教程

创建表格 要在MySQL中创建表格,请使用"CREATE TABLE"语句。 确保在创建连接时定义了数据库的名称。 示例创建一个名为 “customers” 的表格: import mysql.connectormydb mysql.connector.connect(host"localhost",user"…

LDR6023AQ-PDHUB最简外围成本低搂到底就是干

USB-C PD协议里,SRC和SNK双方之间通过CC通信来协商请求确定充电功率及数据传输速率。当个设备需要充电时,它会发送消息去给适配器请求充电,此时充电器会回应设备的请求,并告知其可提供的档位功率,设备端会根据适配器端…

Java集合面试题

常见的java集合? 主要分为三类,List Map Set 列表 映射 集 集合相关的接口都在 java.util中 java集合的主要关系 List 特性: 存储的元素有序,可重复 Set 特性:存储的元素无序,不可重复 Map 特性…

【Proteus仿真】【51单片机】汽车尾灯控制设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器,使用按键、LED模块等。 主要功能: 系统运行后,系统运行后,系统开始运行,K1键控制左转向灯;…

外贸企业GMS认证|SD-WAN专线解决方案支持 IPv6、IPv4

IP地址是英文internet protocol的缩写,是网络之间互连的协议。互联网诞生后,很长一段时间都是使用v4版本的IP协议,也就是 IPv4 ,目前全球使用互联网的人数达到了48.8亿,而IPv4的地址库总共约43亿个地址,每个…

相同的树(C++解法)

题目 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p [1,2,3], q [1,2,3] 输出:true示例 …

结构体内存对齐(三板斧解决结构体的大小)

文章目录 前言一、结构体对齐规则二、结构体大小计算 - 三板斧一板斧二板斧三板斧 三、为什么存在内存对齐?四、修改默认对齐数 前言 我们知道,整型变量有自己的大小,浮点型变量有自己的大小,数组也有自己的大小,只要…