反射篇笔记

反射的本质:加载类。

把某个类的字节码文件加载到内存中。并允许以变成的方式解剖类中的各种成分(成员方法,变量,构造器)。

例如在使用IDEA时,他的提示,就是利用反射,提前将类中的信息解剖展示出来。

反射的第一步:获取类的class对象

         //1.通过类名获取class对象
        Class a = User.class;

        //2.通过全类名获取class对象
        Class b = Class.forName("com.datatype.User");

        //3.通过对象获取class对象
        Class c = new User().getClass();

        System.out.println(a==b);
        System.out.println(c==b);
        //其中a,b,c都是同一个对象。

2.1:通过反射获取构造器实例化对象

        //获取类的class对象
        Class<User> a = User.class;
        //通过class对象获取有参构造器
        Constructor<User> b = a.getDeclaredConstructor(Integer.class, String.class, Integer.class, Boolean.class);
        //通过class对象获取无参构造器
        Constructor<User> c = a.getDeclaredConstructor();
        //修改成员的访问权限
        b.setAccessible(true);
        //通过反射创建类的实例
        User user = b.newInstance(12, "李兆", 13, false);
        System.out.println(user.toString());

2.2:.通过反射向字段赋值,在传递给对象

        //通过全类名创建对象
        Class a = Class.forName("com.datatype.User");
        //获取无参构造
        Constructor Aconstructor = a.getDeclaredConstructor();
        //修改访问权限
        Aconstructor.setAccessible(true);
        //通过无参构造创建对象
        User user = (User) Aconstructor.newInstance();
        //获取字段
        Field name = a.getDeclaredField("name");
        name.setAccessible(true);
        name.set(user, "李兆");
        System.out.println(user);

2.3:通过反射运行方法

        Class a = User.class;
        //获取成员方法,需要参数-->方法名,参数类型
        Method toString = a.getDeclaredMethod("toString");
        System.out.println(toString.invoke(new User()));

对于注解的使用

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

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

相关文章

AMEYA360:海康存储PCIe4.0固态硬盘A4000介绍

海康存储即将发布PCIe4.0固态硬盘新品A4000&#xff0c;搭载全新定制主控及高品质3D NAND闪存颗粒&#xff0c;最大顺序读取速度达7100MB/s&#xff0c;提供五年质保服务。 2022年&#xff0c;海康存储开始在PCIe 4.0固态硬盘领域全面发力&#xff0c;推出C4000 ECO、C4000等多…

将自己的django项目部署到云服务器(腾讯云centos)

最近自己买了个云服务玩&#xff0c;突然就想把自己写的小项目部署到云服务器上&#xff0c;这样就可以实现公网访问了。以下是整个部署过程和遇到的各种问题的解决方案&#xff0c;有想自己部署自己功能的&#xff0c;可以参考着进行哦。 1、设置好腾讯云的远程登录代码 先给…

yarn历史日志_配置文件

yarn历史日志yarn配置文件yarn执行任务 1.3. YARN的历史日志 1.3.1. 历史日志概述 我们在YARN运行MapReduce的程序的时候&#xff0c;任务会被分发到不同的节点&#xff0c;在不同的Container内去执行。如果一个程序执行结束后&#xff0c;我们想去查看这个程序的运行状态呢…

接口芯片选型分析 四通道差分驱动可满足ANSI TIA/EIA-422-B 和ITU V.11 的要求 低功耗,高速率,高ESD

四通道差分驱动可满足ANSI TIA/EIA-422-B 和ITU V.11 的要求 低功耗&#xff0c;高速率&#xff0c;高ESD。 其中GC26L31S可替代AM26LS31/TI&#xff0c;GC26L32S替代AM26LS32/TI&#xff0c;GC26E31S替代TI的AM26LV31E

19.java绘图

A.Graphics类 Graphics类是java.awt包中的一个类&#xff0c;它用于在图形用户界面&#xff08;GUI&#xff09;或其他图形应用程序中进行绘制。该类通常与Component的paint方法一起使用&#xff0c;以在组件上进行绘制操作。 一些Graphics类的常见用法和方法&#xff1a; 在组…

天软基金经理因子定期报告(2023-12)

天软基金经理因子定期报告&#xff08;2023-12&#xff09;报告概要&#xff1a; 从投资业绩来看&#xff0c;葛兰长期业绩表现优于市场&#xff0c;任职以来年化收益率为12.714%&#xff0c;最大回撤为-53.460%。 从投资能力来看&#xff0c;其选股能力与收益择时能力较为突出…

发布 Whatsonchain 上的 BSV20 插件

我们发布了 whatsonchain 上的 BSV20 插件来验证 BSV20 代币。 对于任何交易&#xff0c;whatsonchain 都可以通过以下网址打开&#xff1a; https://whatsonchain.com/tx/{hash}我们使用此 bsv20 v21 交易 打开 Whatsonchain 。 打开whatsonchain后你会看到BSV20插件&#x…

阿里云国际跨境直播解决方案,视频AI创新营销模式丰富直播场景

据第三方咨询公司iiMedia Research预测&#xff0c;2017-2020年&#xff0c;视频直播行业一直处于高速发展阶段。2020年&#xff0c;视频直播行业市场收入超1万亿元&#xff0c;累计覆盖用户5.26亿。 视频直播的应用范围已从视频娱乐、电子商务等泛互联网行业扩展到在线教育、…

python算法例17 下一个稀疏数

1. 问题描述 如果一个数是稀疏数&#xff0c;则它的二进制表示中没有相邻的1&#xff0c;例如5&#xff08;二进制表示为101&#xff09;是稀疏数&#xff0c;但是6&#xff08;二进制表示为110&#xff09;不是稀疏数&#xff0c;本例将给出一个n&#xff0c;找出大于或等于n…

Backtrader 文档学习-Quickstart

Backtrader 文档学习-Quickstart 0. 前言 backtrader&#xff0c;功能十分完善&#xff0c;有完整的使用文档&#xff0c;安装相对简单&#xff08;直接pip安装即可&#xff09;。 优点是运行速度快&#xff0c;支持pandas的矢量运算&#xff1b;支持参数自动寻优运算&#x…

软件测试基础知识+面试总结(超详细整理)

一、什么是软件&#xff1f; 软件是计算机系统中的程序和相关文件或文档的总称。 二、什么是软件测试&#xff1f; 说法一&#xff1a;使用人工或自动的手段来运行或测量软件系统的过程&#xff0c;以检验软件系统是否满足规定的要求&#xff0c;并找出与预期结果之间的差异…

yaml 文件格式

yaml文件&#xff1a;是一种标记语言&#xff0c;以竖列形式展示序列化的时间格式&#xff0c;可读性高 类似于json格式。语法简单。 yaml通过缩进来表示数据结构&#xff0c;连续的项目用-减号来表示。 yaml文件使用的注意事项&#xff1a; 1&#xff0c;大小写敏感 2&am…

深度学习环境配置------windows系统(GPU)------Pytorch

深度学习环境配置------windows系统&#xff08;GPU&#xff09;------Pytorch 准备工作明确操作系统明确显卡系列 CUDA和Cudnn下载与安装1.下载2.安装 环境配置过程1.安装Anacoda2.配置环境1&#xff09;创建一个新的虚拟环境2&#xff09;pytorch相关库的安装 2.安装VScode1&…

​Linux系列之yum安装​

yum是Linux系统的安装必备神器&#xff0c;简直不要太方便。但是新系统一般是不自带yum工具的&#xff0c;所以需要手动安装一下。 环境&#xff1a;Ubuntu sudo apt-get install yumsudo apt-get install rpm 环境&#xff1a;centos7 新建一个目录用来保存yum安装包 mk…

redis-学习笔记(Jedis 前置知识)

自定义的 Redis 客户端 咱们可以实现编写出一个自定义的 Redis 客户端 因为 Redis 公开了自己使用的自定义协议 ---- RESP 协议清楚了, 那么通信数据格式就清除了, 就能完成各层次之间的数据传输, 就能开发服务器和客户端 RESP — Redis 的 序列化 协议 特点: 简单好实现快读进…

HarmonyOS给应用添加弹窗

给您的应用添加弹窗 概述 在我们日常使用应用的时候&#xff0c;可能会进行一些敏感的操作&#xff0c;比如删除联系人&#xff0c;这时候我们给应用添加弹窗来提示用户是否需要执行该操作&#xff0c;如下图所示&#xff1a; 弹窗是一种模态窗口&#xff0c;通常用来展示用户…

安装odoo17 Windows版时,PostgreSQL Database无法被勾选

安装odoo17 Windows版时&#xff0c;PostgreSQL Database无法被勾选。 出现的原因是&#xff0c;曾经安装过PostgreSQL Database&#xff1b;虽然可能已被卸载&#xff0c;但注册表内还有残余信息&#xff0c;导致odoo认为PostgreSQL Database仍存在于系统之中。 解决方案 删…

MySQL笔记-第10章_创建和管理表

视频链接&#xff1a;【MySQL数据库入门到大牛&#xff0c;mysql安装到优化&#xff0c;百科全书级&#xff0c;全网天花板】 文章目录 第10章_创建和管理表1. 基础知识1.1 一条数据存储的过程1.2 标识符命名规则1.3 MySQL中的数据类型 2. 创建和管理数据库2.1 创建数据库2.2 使…

用友系列之YonBuilder低代码平台概论和基本使用

文章目录 前言一、低代码平台是什么&#xff1f;二、用友的YonBuilder应用构建平台2.1.YonBuilder应用构建平台2.2.丰富的组件库和可视化设计器2.3.完善的应用全生命周期管理2.4.完善的学习社区 三、用友的YonBuilder应用构建平台实战3.1. 注册账号、登录3.2.进入开发者中心工作…

Fluter工具安装与环境搭建

1、下载 Flutter SDK&#xff0c;下载完成后&#xff0c;在需要放置SDK的地方解压即可。 注意&#xff1a; 请勿将 Flutter 有特殊字符或空格的路径下。请勿将 Flutter 安装在需要高权限的文件夹内&#xff0c;例如 C:\Program Files\。 2、配置环境变量 例如&#xff1a; …