一、基础篇--1.1Java基础-反射的用途和实现

Java基础篇——反射&枚举 阅读详情

一、基础篇--1.1Java基础-反射的用途和实现

https://blog.youkuaiyun.com/SongYuxinIT/article/details/81872066

反射的核心是JVM在运行时才动态加载类或调用方法/访问属性,它不需要事先(写代码的时候或编译期)知道运行对象是谁。

java反射框架主要提供以下功能:

  • 在运行时判断任意一个对象所属的类
  • 在运行时构造任意一个类的对象
  • 在运行时判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法)
  • 在运行时调用任意一个对象的方法

主要用途:

  反射最重要的用途就是开发各种通用框架。

基本反射功能的实现(反射相关的类一般都在java.lang.relfect包里):

  • 获的class对象
    • 使用Class类的forName静态方法,例如:Class.forName("xxxx");
    • 直接获取某一个类的class,例如Object.class;
    • 调用某个对象的getClass()方法,例如:new Object().getClass();
  • 判断是否为某个类的实例
    • 用isstanceof关键字来判断是否为某个类的实例
  • 创建实例
    • 使用Class对象的newInstance()方法创建Class对象对应类的实例。
    • 先通过Class对象获取指定的构造器Constructor,再调用ConStructor对象的newInstance()方法创建实例。
  • 获取方法
    • getDeclareMethods()
  • 获取构造器信息
    • getConstructors()
  • 获取类的成员变量(字段)信息
    • getFields();访问共有的成员变量
    • getDeclareFields();得到所有的字段,包括公共,保护,默认(包)和私有变量,但不包括继承的字段。
  • 调用方法
    • invoke();
  • 利用反射创建数组
    • Array.newInstance()

注意:

  由于反射会额外消耗一定的系统资源,因此如果不需要动态地创建一个对象,那么就不需要用反射。
  另外,反射调用方法时可以忽略权限检查,因此可能会破坏封装性而导致安全问题。

posted @ 2018-11-15 16:38 ForeverYoungCoder 阅读( ...) 评论( ...) 编辑 收藏
深入理解Java反射:原理、用途及示例详解 Java反射机制是一种在运行时检查和修改类或接口的方法。在运行时获取类的结构(如类名、字段、方法、构造函数等)。动态地创建类的实例。动态调用类的方法或访问字段。反射让Java程序具有动态性,特别适合用于框架开发或通用工具的编写。Java反射是一项强大但谨慎使用的技术。它允许程序在运行时操作类的内部结构,为框架开发和动态加载提供了支持。然而,由于其性能开销和安全问题,反射应仅在必要时使用。对于Java开发者而言,理解反射的基本操作和应用场景,能够为编写灵活而强大的代码打下坚实基础。 阅读详情

相关推荐

C2000 ePWM与SDFM同步配置:从寄存器到Driverlib实战解析

在嵌入式实时控制系统中,脉宽调制(PWM)是实现电机驱动、数字电源等应用的核心技术,其信号质量和时序精度直接决定了系统性能。为实现精确控制,PWM信号常需与模数转换器(ADC)或Sigma-Delta滤波器(SDFM)的采样时刻严格同步,以消除开关噪声并获取准确的反馈信号。其技术原理在于通过硬件同步机制,将PWM的特定时间点(如周期中心)作为触发源,控制数据采集的启动时刻。这种硬件级同步能有效提升闭环控制的稳定性和动态响应速度,广泛应用于伺服驱动、变频器等高性能场景。本文聚焦于TI C2000系列微控制器,

weixin_33692284的博客 442

Java反射

JVM简述 了解Java的反射,首先需要知道虚拟机(JVM)是如何处理Java程序的。附图如下: 假定程序中有一句源码如下: Object o = new Object(); 详细流程如下: 你的代码(.java文件)会编译成(.class文件); JVM启动,调用main方法,.class文件会被类加载器加载进JVM的内存中,类(Object)的元数据信息会被加载到方法区,创...

UtopiaOfArtoria的博客 326

让 AI 学会“慢思考”:MCP Sequential Thinking 深度部署与使用指南

摘要: MCP Sequential Thinking 是一种让AI具备"慢思考"能力的技术,通过动态调整思维路径解决复杂问题。本文详细介绍了在Windows、macOS和Linux系统下的部署方法,包括环境准备、配置文件修改等步骤。该技术通过"产生想法-评估需求-修正路径"的循环机制,显著提升AI在代码设计、数学证明等复杂任务中的表现。文章还提供了验证安装方法、使用示例和常见问题解答,帮助开发者解锁AI的深层思考能力。(149字)

weixin_43236925的博客 1907

Java中的反射的作用以及详解

java反射的作用以及详解

m0_72568404的博客 3127

【DAY11】超参数调整专题1

核心优势: 它不是随机选择下一个点,而是根据先前评估的结果建立一个概率模型(通常是高斯过程),预测哪些参数组合可能产生更好的结果,并据此选择下一个评估点。这使得它在寻找最优解方面通常比随机搜索更高效(用更少的迭代次数达到相似或更好的性能),特别是当模型训练(单次评估)非常耗时的时候。实际上,有着非常多的方式可以实现贝叶斯优化,上面的代码比较简洁美观,贝叶斯优化和网格搜索的代码书写风格高度一致。- 需要定义参数的搜索空间,与随机搜索类似,当搜索空间非常大时,它通常比网格搜索和随机搜索更有效。

daomingwu1的博客 747

工业缺陷标注要人命?我从零搭了一套自动标注系统,标注效率直接提升10倍

你是不是也深陷工业缺陷标注的无尽内耗?这不是个例,工业视觉项目落地,80%的时间和成本,都耗在了数据标注环节。普通的图像标注(猫狗分类、人脸识别),标注门槛低、规则简单、一致性要求宽松;而工业缺陷标注,是CV领域公认的地狱级难度:缺陷尺寸小到几像素、种类繁杂且非标、行业专业性极强、标注精度要求到像素级、正负样本极度不均衡,人工标注不仅效率低、成本高,更直接决定了模型的最终上限。我在工业视觉行业摸爬滚打了6年,踩遍了人工标注的所有坑,最终从零搭建了一套工业缺陷专用的闭环自动标注系统,把原来一张图30分钟的标注

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 202

java反射的用途及实现

一、Java反射框架主要提供以下功能 1.在运行时判断任意一个对象所属的类; 2.在运行时构造任意一个类的对象; 3.在运行时判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法); 4.在运行时调用任意一个对象的方法 二、主要用途 反射最重要的用途就是开发各种通用框架(Spring,hibernate,mybatis)。 三、基本反射功能的实现(反射相关的类一般都在...

cristianoxm的博客 2197

Ubuntu 22.04+/WSL2 中解决 `error: externally-managed-environment` 并成功安装 PyTorch + vLLM 的完整指南

Ubuntu 22.04+/WSL2 因遵循 PEP 668 规范,系统 Python 被标记为“外部管理”,导致直接使用 pip install 安装包时报错 externally-managed-environment。解决方案是创建虚拟环境: 通过 python3 -m venv ~/vllm-env 创建隔离环境 激活环境后安装 PyTorch(CUDA 12.1)和 vLLM 避免使用 sudo pip 或 --break-system-packages,防止破坏系统依赖 关键点: 虚拟环

刘一说的IT专栏 296

java反射使用(详细易懂,文末附Demo)

Reflection(反射) 是 Java 程序开发语言的特征之一,他的作用简单来说就是可以在程序运行过程中获取一个类的所有信息(包括成员变量,成员方法,构造器等),并且能够进行变量修改和方法调用。使用场景较多的是:在项目中接入了第三方框架,而其中某些类的属性和方法是私有的,无法获取、调用。这时可通过反射获取其成员变量、方法等信息,进行值的获取、修改、方法调用等等操作。{//私有属性//公有属性//构造方法{System.out.println("无参构造方法");}{

isenjouy的博客 4677

基于FPGA的多通道音频信号采样系统设计

FPGA是随着数字集成电路的发展而逐步演变而来的。从早期的电子管、晶体管、小规模集成电路,到超大规模集成电路(VLSIC),数字集成电路的集成度和性能不断提升。FPGA的出现为系统设计师提供了灵活的设计平台,使其能够在不依赖半导体厂商的情况下快速设计专用集成电路(ASIC)。FPGA具有设计周期短、成本低、开发工具先进等优点,广泛应用于原型设计和产品生产中。VHDL是一种用于描述数字系统的硬件描述语言,其语言形式类似于计算机高级语言,但包含了许多硬件特征语句。

qq_62634009的博客 709

电商行业分析爬虫:抓取行业数据,进行行业分析

电商行业数据分析对于市场研究、竞争分析和商业决策至关重要。通过爬取电商平台的数据,我们可以深入了解市场动态、消费者行为和商品销售情况。本文将介绍如何构建一个电商行业分析爬虫,抓取商品信息、销售数据和用户评价等,并进行数据分析。

u014481728的博客 1628

Java基础-反射

前言 疯狂复习基础ing~ 最近复习的Java基础反射做了应该总结,果然反射不只有那么一点点东西,多的是精髓! 最重要的是最后推荐的那两篇文章,写的非常非常好!! 反射 1.反射的原理 Java反射机制就是在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法;对于任意一个对象,都能调用它的任意方法和属性;这种动态获取信息以及动态调用对象的功能称为Java语言的反射机制 粗略的理解:反射就是在程序运行时,能够动态的操作类的成员。 2.反射的用途 在日常的第三方应用开发过程中,经常会遇到某个类

ScholarTang的博客 3696

基于STC8G1K08A单片机的EC11旋转编码器控制(江科大同款,代码可直接使用)

本文介绍了STC8G系列单片机与EC11旋转编码器的接口实现方案。硬件方面详细说明了EC11编码器的机械结构、电气特性及与单片机的典型连接电路,包括上拉电阻和消抖设计。软件部分重点阐述了状态检测算法,通过状态机和查找表实现方向判断,采用中断方式检测信号变化,并配合定时器进行软件消抖处理。文章还提供了完整的代码实现,包括GPIO初始化、中断服务函数、状态转换逻辑等关键模块,展示了如何通过串口输出验证旋转计数。最后讨论了抗抖动优化、高低速应用场景等实际问题解决方案。该方案在菜单导航、参数调节等场景中具有实用价值

weixin_74013772的博客 322

重学Java基础篇—Java 反射机制及其用途

反射是一把双刃剑,合理使用能极大提升代码灵活性,但滥用会导致性能问题和维护困难。框架通过反射统一处理不同类型的对象,减少重复代码(如 JSON 序列化库)。允许程序在运行时动态加载类、调用方法,适应不确定的类结构(如插件化架构)。:JVM 无法优化反射调用,涉及动态方法查找和权限检查。从配置文件中读取类名和方法名,动态创建对象并调用方法。反射调用目标方法,实现日志、事务等横切逻辑。:运行时解析类名、方法、字段、注解等元数据。:修改或读取对象的字段值(包括私有字段)。:运行时调用任意方法(包括私有方法)。

有天你会让我妒忌的 1004

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java基础篇:反射机制详解

一、什么是反射: 反射是Java的特征之一,是一种间接操作目标对象的机制,核心是JVM在运行的时候才动态加载类,并且对于任意一个类,都能够知道这个类的所有属性和方法,调用方法/访问属性,不需要提前在编译期知道运行的对象是谁,他允许运行中的Java程序获取类的信息,并且可以操作类或对象内部属性。程序中对象的类型一般都是在编译期就确定下来的,而当我们的程序在运行时,可能需要动态的加载一些...

张维鹏的博客 22万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

反射的用途与实现

文章目录基础补充一、基本类型二、String不可变的好处1、可以缓存hash值2、String Pool的需要3、安全性4、线程安全String Poolnew String(”abc“)三、运算参数传递float 与 double隐式类型转换switch四、继承访问权限抽象类与接口1、抽象类2、接口3、比较4、使用选择Super五、Object通用方法等价于相等hashCode()Clone()...

littleAusna的博客 956

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Java 基础语法】详解 Java 的反射

文章目录1. 定义2. 为什么要有反射2. 用途3. 反射相关的类3.1 总览图3.2 Class 类相关的方法3.3 Filed 类相关的方法3.4 Method 类相关的方法3.5 Constructor 类相关的方法4. 获取 Class 对象4.1 Class 类(反射机制的起源)4.2 获取 Class 对象三种方式5. 反射的使用6. 反射的优点和缺点 1. 定义 Java 的反射(Reflection)机制是在运行状态中,对任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够

吞吞吐吐大魔王的博客 2904

Java反射机制的原理和用途

看了好多关于Java反射机制的文章,大多都太过官方,消化起来比较稍显费劲,本篇,我会依据自己的理解去阐述什么是Java的反射机制,反射用在什么地方,以及怎么来使用? 开篇前,我们还是要了解一下,什么是Java的反射机制: “程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl、Python(看过我写的Python3学习系列的博文,不止一次突出...

Appleyk的专栏 3万+

【Java基础篇】反射

Java1.5-反射什么是反射反射的基本步骤反射常用API获取字节码Class对象获取包名&类名获取构造方法定义信息获取方法定义信息获取成员变量定义信息反射新建实例反射调用成员变量反射调用成员方法测试反射API测试实体类测试获取类对象测试获取构造方法测试获取成员变量测试反射创建对象暴力反射测试实体类测试获取私有构造测试获取和设置私有属性测试获取和设置私有方法 什么是反射 其实就是动态加载一个指定的类,并获取该类中的所有的内容。而且将字节码文件封装成Class对象,并将字节码文件中的内容都封装成其他

输入技术、输出想法 2626

java 反射用途_反射的用途及实现

什么是Java类中的反射?当程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。我们认为 Java 并不是动态语言,但是它却又一个非常突出的动态相关的机制,俗称:反射。Reflection 是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类和对象的内部属性。Oracle 官方对反射解释:image.png通过反射,我们可以在运行时获得程序或程...

weixin_42356137的博客 595

Java基础篇反射机制总结

1. 反射基础知识预备 1.1 反射机制概述 :rocket:1.2 Class类的理解 1.3 类的加载与ClassLoader的理解 2. 反射机制的具体实现 2.1 获取运行时类对象 2.2 获取运行时类的完整结构 :rocket: 2.3 调用运行时类的指定结构 2.4 动态代理

weixin_44606952的博客 1740

Java反射的用途

Java反射是一项强大的特性,它为我们提供了在运行时获取和操作类的信息的能力。通过反射,我们可以动态地创建对象、调用方法、访问和修改字段,甚至实现动态代理。Java反射是一种强大的特性,它允许我们在运行时获取和操作类的信息。通过反射,我们可以动态地创建对象、调用方法、访问和修改字段,甚至可以实现动态代理。通过动态代理,我们可以在运行时生成代理对象,并在代理对象中添加额外的逻辑。在许多情况下,我们需要在运行时获取类的信息,例如类的名称、修饰符、父类、接口等。通过反射,我们可以访问和修改对象的字段。

果酱 の 博客 5828

基础篇:深入解析JAVA反射机制

JAVA反射机制,JDK动态代理。Class\Constructor\Method\Field

潜行前行的专栏 2969
上一篇: 一、基础篇--1.1Java基础-抽象类和接口的区别
下一篇: 一、基础篇--1.1Java基础-自定义注解的场景及实现
口德尔
博客等级 码龄14年 3粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值