JAVA—反射

      学习Java中关于反射的知识,以理解框架

目录

1.认识反射

2.获取类

3.获取构造器

4.获取成员变量​编辑

5.获取成员方法

6.作用 应用场景


1.认识反射

反射 

加载类 并允许以编程的方式解刨类中的各种成分(成员变量 方法 构造器)

学习反射就是学习获取类的信息 操作他们 


2.获取类

加载类 获取类的字节码对象 Class对象

获取Class类名的三种方式

Class c1 = 类名.class

调用Class提供的方法:public static Class forName(String package)

Object提供的方法:public Class getClass() //需要先获取一个对象才能使用 

package High_reflect;public class TextClass {public static void main(String[] args) throws Exception {Class c1 = Student.class;System.out.println(c1.getName()); //全类名System.out.println(c1.getSimpleName()); //简名:StudentClass c2 = Class.forName("class High_reflect.Student");System.out.println(c1 == c2);Student s3 = new Student();Class c3 = s3.getClass();}
}

3.获取构造器

方法说明
Constructor<?>[ ] getConstructors()获取全部构造器(只能获得public修饰的)
Constructor<?>[ ] getDeclaredConstructors()获取全部构造器
Constructor<T>[ ] getConstructor(Class<?>... parametertypes)获取某个构造器
Constructor<Y>[ ] getDeclaredConstructor(Class<?>... parameterTypes)获取全部构造器
package High_reflect;import java.lang.reflect.Constructor;public class TextClass {public static void main(String[] args) throws Exception {Class c1 = Student.class;System.out.println(c1.getName()); //全类名System.out.println(c1.getSimpleName()); //简名:Student// 2.获取类的全部构造器(只可以拿到public修饰的构造器)Constructor[] constructor = c1.getConstructors();//3.遍历数组中的每一个构造器对象for (Constructor constructor1 : constructor) {System.out.println(constructor1.getName()+"------->"+constructor1.getParameterCount());}Constructor[] constructor1 = c1.getDeclaredConstructors();for (Constructor constructor2 : constructor1) {System.out.println(constructor2.getName()+"------->"+constructor2.getParameterCount());}}
}

4.获取成员变量

package High_reflect;import org.junit.Test;import java.lang.reflect.Field;public class TextClass1 {@Testpublic void testGetFields() throws Exception {Class c = Student.class;//获取全部成员变量Field[] declaredFields = c.getDeclaredFields();for (Field declaredField : declaredFields) {System.out.println(declaredField.getName() + declaredField.getType());}//定位某个成员变量Field fName = c.getDeclaredField("name");System.out.println(fName.getName());}}

 获取变量的作用依然是进行赋值和取值


5.获取成员方法


6.作用 应用场景

  • 基本作用:得到一个类的全部成分然后操作
  • 可以破坏封装性
  • 最重要:适合做java的框架,基本上主流的框架都会基于反射设计功能

                                                                                 学习时间:2024.09.06 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Hadoop|HDFS篇】HDFS的读写流程

1. HDFS的写流程 1.1 剖析文件的写入 副本存储节点的选择问题&#xff1a; 第一个副本在Client所在的节点上&#xff0c;如果客户端在集群外&#xff0c;随机选一个。第二个副本在另一个机架的随机一个节点上。第三个副本在第二个副本所在的机架的随机节点上。 2. HDFS的写流…

机器学习和物联网驱动技术在加工过程中监测工具磨损:一项全面的综述

这篇论文的标题是《Machine-Learning and Internet-of-Things-Driven Techniques for Monitoring Tool Wear in Machining Process: A Comprehensive Review》&#xff0c;由 Sudhan Kasiviswanathan、Sakthivel Gnanasekaran、Mohanraj Thangamuthu 和 Jegadeeshwaran Rakkiya…

超越传统:Reflection 70B如何革新AI语言处理

Reflection 70B&#xff1a;AI语言模型的新里程碑&#x1f680; AI领域迎来了革命性的变革&#xff0c;HyperWrite公司推出的开源AI大模型Reflection 70B&#xff0c;以其卓越的性能在多个基准测试中超越了GPT-4o和Llama 3.1。这款基于Meta的Llama 3.1 70B Instruct构建的模型…

经验笔记:DevOps

DevOps经验笔记 DevOps&#xff08;Development and Operations&#xff09;是一种旨在通过加强开发&#xff08;Development&#xff09;与运维&#xff08;Operations&#xff09;之间合作的文化理念、实践方法和工具集合。DevOps的目标是在软件开发生命周期中实现更高的效率…

为何iPhone 16系列的发布对苹果至关重要?

即将发布的iPhone 16系列对苹果来说将是至关重要的时刻&#xff0c;特别是在快速发展的AI智能手机市场背景下。随着Android制造商在集成先进AI功能方面领先一步&#xff0c;苹果正处于一个关键的转折点——赶上竞争对手不仅仅是选择&#xff0c;而是必须完成的任务。 AI竞赛&am…

ARM base instruction -- b.cs

B Branch causes an unconditional branch to a label at a PC-relative offset, with a hint that this is not a subroutine call or return. 在PC相对偏移处对标签进行无条件分支&#xff0c;并提示这不是子程序调用或返回。 操作码 助记符 标志 含义 0x2 …

vue-----window.open打开新窗口文件并且修改窗口标题下载文件

vue-----window.open打开新窗口文件并且修改窗口标题&&下载文件 // 下载word文件downloadFile(url, fileName) {const xhr new XMLHttpRequest();xhr.open("GET", url, true);xhr.responseType "blob";xhr.onload function () {if (xhr.status …

上交2024最新-《动手学大模型》实战教程及ppt分享!

本课介绍 今天分享一个上海交大的免费的大模型课程&#xff0c;有相关教程文档和Slides&#xff0c;目前是2.2K星标&#xff0c;还是挺火的&#xff01; 《动手学大模型》系列编程实践教程&#xff0c;由上海交通大学2024年春季《人工智能安全技术》课程&#xff08;NIS3353&…

传统CV算法——基于harris检测算法实现角点检测

角点 角点是图像中的一个特征点&#xff0c;指的是两条边缘交叉的点&#xff0c;这样的点在图像中通常表示一个显著的几角。在计算机视觉和图像处理中&#xff0c;角点是重要的特征&#xff0c;因为它们通常是图像中信息丰富的区域&#xff0c;可以用于图像分析、对象识别、3D…

如何在极狐GitLab中添加 SSH Key?

本文分享如何生成 SSH Key 并添加到极狐GitLab 中&#xff0c;然后用 SSH Key 进行代码拉取。 极狐GitLab 是 GitLab 在中国的发行版&#xff0c;可以私有化部署&#xff0c;对中文的支持非常友好&#xff0c;是专为中国程序员和企业推出的企业级一体化 DevOps 平台&#xff0…

43. 1 ~ n 整数中 1 出现的次数【难】

comments: true difficulty: 中等 edit_url: https://github.com/doocs/leetcode/edit/main/lcof/%E9%9D%A2%E8%AF%95%E9%A2%9843.%201%EF%BD%9En%E6%95%B4%E6%95%B0%E4%B8%AD1%E5%87%BA%E7%8E%B0%E7%9A%84%E6%AC%A1%E6%95%B0/README.md 面试题 43. 1 &#xff5e; n 整数中 1 …

《Transformer 模型》

一、引言 在自然语言处理领域&#xff0c;Transformer 模型的出现带来了革命性的变化。它以其强大的性能和并行计算能力&#xff0c;在机器翻译、文本生成、语言理解等众多任务中取得了显著的成果。本文将深入探讨 Transformer 模型的原理、结构、训练方法以及应用场景&#xf…

【Cesium实体创建】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Cesium目录 前言一、Cesium二、点 线 实体1.点实体2.线实体 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;随着人工智能的不…

C#游戏服务器开发框架设计与架构详解

我一直在思考一个问题&#xff0c;什么样的服务端框架最好用&#xff0c;最适合? 经过这些年的项目经验&#xff0c;其实最好用&#xff0c;最适合的游戏服务端框架就是自己结合公司项目需求,团队特点与技术能力,自己整合的游戏框架是最好用的。 很多新手会担心自己整合的框架…

JS生成二维码QRCode代码

JavaScript是一种广泛使用的前端编程语言&#xff0c;它不仅用于网页交互&#xff0c;还可以实现许多实用功能&#xff0c;如生成二维码。本篇文章将深入探讨如何使用JavaScript生成二维码&#xff0c;以及如何确保这种生成的二维码在各种浏览器和手机端都能正常工作&#xff0…

找不同-第15届蓝桥省赛Scratch初级组真题第4题

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第183讲。 如果想持续关注Scratch蓝桥真题解读&#xff0c;可以点击《Scratch蓝桥杯历年真题》并订阅合集&#xff0c;…

HarmonyOS 开发范式、应用模型

ArkUI框架两种开发范式&#xff1a; 基于ArkTS的声明式开发范式&#xff08;简称“声明式开发范式”&#xff09;兼容JS的类Web开发范式&#xff08;简称“类Web开发范式”&#xff09;。 以下是两种开发范式的简单对比: 开发范式名称 语言生态 UI更新方式 声明式开发范式…

GAMES101(0~1作业)

搭建虚拟机环境 安装Oracle VM VirtualBox虚拟机&#xff0c;安装虚拟硬盘&#xff0c;配置Linux Ubuntu-64 bit系统&#xff0c;启动虚拟机&#xff0c;发生冲突错误&#xff1a; 将Vmware虚拟设备取消挂起状态&#xff0c;关机确保 Hyper-V 完全关闭&#xff1a;bcdedit /se…

VirtualBox中常见的网络设置模式

1. NAT&#xff08;网络地址转换&#xff09; 用途&#xff1a;默认的网络设置。适合虚拟机需要访问外部网络&#xff08;如互联网&#xff09;&#xff0c;但不需要外界直接访问虚拟机的场景。特点&#xff1a; 虚拟机通过主机系统的 IP 地址访问外网。主机和外网可以访问虚拟…

【Python · Pytorch】配置cuda环境 cuDNN库

【Python Pytorch】配置cuda环境 & cuDNN库 1. 查找对应版本1.1 查看Pytorch GPU目前支持版本1.1 查看Nvidia驱动版本1.2 查看支持cuda版本1.3 查看支持cuDNN版本1.3.1 cuDNN 9.0.0及以上版本1.3.2 cuDNN 9.0.0以下版本 1.4 安装版本确定 2. 安装cuda环境2.1 cuda简介2.1.…