java反射的学习

【stata基础代码大全 】 可独立完成一篇实证 用stata打开,直接替换自己需要的变量就行,小白友好❗️❗️❗️。八、八.中介效应检验:路径分析(三种方法)第二种方法即Sobel-Goodman检验。*(7)Winsor处理,剔除异常值。六、内生性问题解决方法(附具体模型)其三,工具变量:两阶段最小二乘。第三种方法即Bootstrap检验。二、Stata中数据的基本处理。*(5)生成行业、年度虚拟变量。PSM1————近邻匹配。七、调节效应检验:机制分析。*(2)剔除数据中的样本。*(4)给变量添加标签。*(3)生成新的变量。*(6)基本数据匹配。 阅读详情

先问一句,到底为啥要学习反射,他到底有啥作用,应用的场景在哪里,不使用反射相比使用反射会有怎样的弊端?

先写个可能比较常见的例子,在jdbc中,加载驱动是如何加载的?

是这句代码:Class.forName("com.mysql.jdbc.Driver");那么com.mysql.jdbc.Drivers是啥?

如图:是这个


用来初始化一些静态属性的应该,不过我好像记得不要这句也可运行的,这里不做深究

下边来记录反射之前,先说下类对象的概念

所有的类,都有一个类对象,这个类对象用于记录类本体的信息,如有哪几种构造方法, 有什么属性,有啥普通方法。

类比一下看下边这个类

package DAO;

public class User {
	int id;
	String name;
	int age;
	public User(int id, String name, int age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}
	public static void main(String[] args) {
		
		User user = new User(1, "小红", 8);
		
	}
	
}
其中
User user = new User(1, "小红", 8);

new出来的user对象记录了一个信息,小红编号是1,今年八岁了

而User这个类对象记录的信息就是User类有int类型的属性,String类型的name属性.........还有构造方法等等。

那么如何获得类对象呢?

方式1
Class c1 = Class.forName("DAO.User");//类对象就是Class类型的,传入路径

方式2

Class c2 =User.class//类名.class

方式3

User user = new User(....);

Class c3 =user.getClass();//对象调用getClass()方法

下边是类对象一些特性

1,方式1和2获得类对象时候静态属性会被初始化,3不会

2,还有当synchronized关键字修饰静态方法的时候, 同步对象就是这个类的类对象。

正常方式new出来对象

下边写反射创建对象的代码

package Train1;

public class Hero {
    public String name;
  
}
package Train1;

import java.lang.reflect.Constructor;

public class TestReflect {
	public static void main(String[] args) {
		
		//类路径
		String classname = "Train1.Hero";
		try {
			//获得类对象
			Class pClass = Class.forName(classname);
			//通过类对象获得构造器
			Constructor c = pClass.getConstructor();
			//通过构造器创造实例
			Hero h = (Hero)c.newInstance();
			//赋值
			h.name = "李白";
			//打印
			System.out.println(h.name);
		} catch (Exception e) {//上边三个都需要处理异常索性就用Exception了
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}
public class TestReflect {
	public static void main(String[] args) {
		
		//类路径
		String classname = "Train1.Hero";
		try {
			//获得类对象
			Class pClass = Class.forName(classname);
			//通过类对象获得构造器
			Constructor c = pClass.getConstructor();
			//通过构造器创造实例
			Hero h = (Hero)c.newInstance();
			//赋值
			h.name = "李白";
			//打印
			System.out.println(h.name);
		} catch (Exception e) {//上边三个都需要处理异常索性就用Exception了
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}

下边是如何修改属性和调用方法

package charactor;

import java.io.File;
import java.io.FileReader;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class APPUser extends User {
	public static void main(String[] args) {
		
		try {
			//获取类User的名字叫做name的字段
			Field f = h.getClass().getDeclaredField("name");//getDeclaredField方法
			//修改值
			f.set(h, "张飞");
			//打印下看看
			System.out.println(h.name);
			
			//下边是调用方法
			// 获取这个名字叫做setName,参数类型是String的方法
			Method m = h.getClass().getMethod("setName", String.class);
			// 对h对象,调用这个方法
			m.invoke(h, "塞班");
			// 使用传统的方式,调用getName方法
			System.out.println(h.getName());
			
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
	
}

对于方法getDeclaredField有些说法

    getField和getDeclaredField有区别
    这两个方法都是用于获取字段

getField 只能获取public的,包括从父类继承来的字段。

而getDeclaredField 能够获取本类所有的字段,包括private的,不包括继承来的字段。


反射的好处:

在后边框架学习中好多配置文件就是基于反射的,打个比方,如果在项目中频繁使用一个类,有几十处上百处使用,那么最好使用反射

,使用反射的话,如果有一天需求需要改动,你需要修改这个对象,那么只需要修改配置文件就可以了,花几秒钟就可以改好了,如果不使用反射方式一个个去修改对象的话,或许需要几个小时。

也是符合低耦合的编码原则,

上述都是个人拙见,并不尽善尽美,完毕。



字节系,ali系,ks,pdd最新抓包方案 各大厂安卓逆向 阅读详情

相关推荐

【吐血整理-历时两个月,长达万字】FDTD Solutions学习笔记

原教学视频来自于Ansys-Lumerical官方的FDTD100,所看视频来自B站大佬UP主 【Nestor_呐等】 的幸苦翻译,本文内容粘贴自我个人在学习FDTD100时,通过字幕和一些个人理解总结的一份word。整理不易,强烈建议收藏!...

weixin_45719141的博客 10万+

【Java】反射详解

本文详细介绍了Java反射机制,主要包括以下内容:1. 反射概述,解释了反射的概念、应用场景及优缺点;2. 获取Class对象的三种方式及类信息获取方法;3. 构造方法反射操作,包括获取构造方法、创建对象实例等。文章通过代码示例演示了如何使用反射动态获取类信息、操作构造方法,适用于框架开发、动态代理等场景,但需注意反射的性能开销和封装性问题。

小昭的博客 1683

解决Qt平台插件初始化失败:This application failed to start because no Qt platform plugin could be initialized

本文深入解析了Qt应用程序启动时常见的‘platform plugin’初始化失败报错,指出其核心在于环境变量冲突或多版本Qt共存导致的插件路径混乱。文章提供了从环境变量检查、路径调整到文件补全的完整解决方案,并给出了使用windeployqt工具等预防性开发实践,帮助用户和开发者彻底解决这一经典问题。

weixin_29229261的博客 2205

Java反射(简单详细且易懂,快速入门)收藏这篇就够了

Java反射是Java语言的一种特性,它允许程序在运行时自我检查并对内部成员进行操作。这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。具体来说,反射机制允许在运行状态中对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,并且能改变它的属性。Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。其本质是JVM得到Class对象之后,再通过Class对象进行反编译,从而获取对象的各种信息。

Libra1313的博客 1035

Fortigate 在AWS中配置HA

方案1: 1、将两台服务器配置在相同可用区中,使用飞塔原生HA功能,可以实现配置同步功能。 2、配置SSLVPN,在主服务器不可用时,可以实现自动切换到备用服务器继续提供VPN服务。 当前问题: 1、主挂掉后可以自动切换到备,但是原主服务器修复后不会自动切换到主状态。 2、如下图所示切换中丢包明显,需要客户端开启“保持连接”功能。 配置过程如下: 1、整体架构 2、创建VPC和子网,如下图所示...

子苏蓝莓的博客 892

MOOS-ivp 实验一 MOOS软件的安装与执行

MOOS-ivp实验一 实验一步骤总结 文章目录MOOS-ivp实验一前言一、实验一1.下载软件2.安装必要的插件3.安装后检查4.路径添加5.执行示例文件总结 前言 在moos学习过程中,我觉得最好把学习的每一步骤都总结一下,方便日后进行回顾。moos官网设置了十八个实验,涉及到了moos的各个方面,完成这些实验也是moos入门的好办法。 一、实验一 实验一主要内容仅仅是软件的安装,仅仅这一步就花费了我接近两天的时间。主要问题发生在linux系统的配置问题上。 1.下载软件 svn co https:

weixin_44151170的博客 6670

Java 反射(Reflection)学习笔记

1. 反射的核心是Class对象,入口是获取 Class 对象的 3 种方式;2. 反射的核心操作:动态创建实例(Constructor)、操作属性(Field)、调用方法(Method);3. 反射的核心价值:为框架提供动态性和灵活性,是 Java 高级开发的基础;4. 使用原则:按需使用,兼顾性能和安全性,避免滥用。

czt_java的博客 612

Zemax非序列模式微透镜阵列仿真:从建模到优化完整指南

光线追迹是光学系统仿真的核心技术,其原理基于几何光学与物理光学的光线传播模型,通过精确计算光线在光学元件中的折射、反射与散射路径,实现对系统性能的预测与评估。在微透镜阵列等复杂多通道光学系统中,传统序列模式因光线路径受限而难以准确模拟串扰与杂散光,非序列光线追迹技术则凭借其灵活的空间传播机制成为关键手段。该技术广泛应用于激光整形、光束匀化、3D传感及光场成像等领域,能够有效支持阵列结构设计与优化。Zemax非序列模式为微透镜阵列仿真提供了完整的建模、优化与公差分析流程,是光学工程师进行复杂系统设计的核心工具

weixin_29967003的博客 334

Java基础之—反射

反射是框架设计的灵魂 (使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)) 一、反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 要想解剖一个类,必须先要获取到该类的字节码文件...

如果我爱自己我就会日出而坐,日落而息 634

RRAM/ Near Memory Computing (NMC) Survey - Reading Notes 0707

Reading Notes of Resistive Random Access Memory – Day 2 Chapter 3 RRAM Characterization and Modeling Overview of RRAM Physical Mechanism A general picture for the filamentary switching mechanism. Forming: 对本征RRAM样本,加电压VformingV_{forming}Vforming​,中间氧化层的O

Blog of Lucky H6 992

YOLOv13改进策略【YOLO和Mamba】| 替换骨干 Mamba-YOLOv13-T !!! 最新的发文热点

模块是模型中的一个重要组成部分,其主要作用是在模型的初始阶段对输入图像进行处理,方便后续的特征提取和目标检测。以下是对。

Limiiiing的博客 355

Java高级:反射

综上4种情况,我们一般使用带Declared的那种方法,这个方法更强大,能获取已存在的全部构造器,而不是仅仅局限于public修饰。也就是说,这样就可以突破封装性(即:获取到private修饰的构造器,就可以构造对象,打破private的封装性)。通常情况下,通过new的方式,进行实例化就行,但是后期学习框架的某些场景下,通过反射进行实例化就显得尤为重要。(2)获取到成员变量的作用:依然是赋值、取值(前提是有一个实例,如:下面代码中的cat实例,赋值、取值的对象都是这个cat实例)

casually的博客 1032

C#上位机实战:Modbus RTU串口通信(CRC校验+超时重发完整实现)

在工业自动化上位机开发中,Modbus RTU是串口通信的事实标准协议,SerialPort是 .NET 平台操作串口的原生类,无需依赖第三方库即可实现基础通信。实际项目中,工控现场存在电磁干扰、串口丢包、设备响应延迟等问题,CRC 数据校验用于保证报文完整性,超时重发机制用于提升通信稳定性。本文从零封装一套可直接落地的 Modbus RTU 通信组件,包含完整的校验算法、超时控制、重发逻辑,并配套 WinForm 演示界面。本文基于 C# 原生SerialPort类,实现了一套生产可用。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 389

Java注解和反射学习汇总(已完结)

Java注解和反射(一)注解的学习和理解 Java注解和反射(二)Calss对象 . . 未完待续!!!!! 写作不易,如果您觉得写的不错,欢迎给博主点赞、收藏、评论、收藏来一波~让博主更有动力吧! 路漫漫其修远兮,吾必将上下求索~ ...

大鱼的博客 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

假人有限元模型

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

java学习总结一、反射

反射(Reflection)指在编译的时候不需要确定数据的类型,而是延迟到运行时获取类的信息(如类名、方法名、字段名)、调用类的方法、访问或修改类的字段,而无需在编译时确定这些信息,反射使Java这种静态编译型的语言具有了动态性。反射具有看透类的能力,类的信息在反射面前都是透明的(包括private的属性和方法都是可以调用)Java 的反射机制主要由 java.lang.reflect 包提供支持,包括 Class 类、Method 类、Field 类等。

weixin_63618344的博客 820

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

一起学JAVA 反射学习(超详细)

Java架构学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

ssdrrg的博客 1008

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java反射学习

Java的反射技术应用广泛,它能够配置:类的权限定名、方法和参数,完成对象的初始化,甚至是反射某些方法。这样就可以大大增强Java的可配置性,Spring IoC的基本原理也是如此,当然Spring IoC的代码要复杂的多。 Java的发射内容繁多,包括对象的构造、反射方法、注释、参数、接口等。本人最近学习了对象构建和方法的反射调用,主要从这两方面来撰写该文章。在Java中,反射是通过包java...

木子陈的博客 230

java反射学习

这篇文章记录对于反射的理解以及学习的过程。会随时修改,不断修改,直到真正掌握了反射。 20191218: 今天对反射的作用存在疑惑,在一个例子中,为什么知道了类名,方法名那个,需要用反射?为什么运行时需要一个类,为什么它没有被加载到内存?小伙伴推荐我看《深入理解Java虚拟机》,好的,周五去图书馆借来看看。 附一个今天看的很好的内容:https://www.ji...

u010571479的博客 195

学习Java——反射

无人问津也好,技不如人也罢,你都要试着安静下来,做自己该做的事情,而不是让烦恼和焦虑毁掉你本就不多的热情和定力,心可以碎,手不能停,该干什么干什么,在崩溃中继续进行,这才是一个成年人的素养

L170311的博客 1533

java学习笔记15——反射机制

2、声明榨汁机(Juicer),包含运行方法:public void run(Fruit f),方法体中,调用f的榨汁方法squeeze()4.(了解)反射的应用4:通过反射获取注解的信息(见com.atguigu04.other.annotation包的测试)> 因为反射体现了动态性(可以在运行时动态的获取对象所属的类,动态的调用相关的方法),所以我们在设计框架的时候,> 从我们作为程序员开发者的角度来讲,我们开发中主要是完成业务代码,对于相关的对象、方法的调用都是确定的。

qq_58956810的博客 754

Java反射学习系列【转】

Java反射学习系列

kermit的博客 269

java反射_Java中反射学习系列教程之一

在上一个系列教程-《Java中注解学习系列教程》中解析自定义注解的时候用到了Java中一种技术--反射。其实在很多源码中,我们都能看到反射的身影。那么什么是反射?为什么要用反射?反射都有哪些常用API?从本文开始我们将系统的介绍Java中反射技术。Java反射学习系列教程主要内容:​本文主要内容:一:什么是反射?二:反射的特点是什么?一:Java中反射是什么反射中的反怎么理解既然有反射及反着来,那...

weixin_39896256的博客 60

java反射机制学习

java反射机制(java Reflection)//本文章是自己的学习之后随手留下的一个笔记,可以用于快速了解java反射,一些细节内容未进行罗列首先说反射(reflection)反射是动态语言的关键,他允许程序在执行期间通过对应的API来,而且可以。在类加载完之后就会生成对应一个包含完整的类的结构信息的class对象,通过这个对象,我们可以像镜子反射一样来回去对应的类的信息,所以我们讲他称之为反射。

2301_79843987的博客 1040

java反射 -- 学习记录

注解定义@FieldName:用于映射实体类字段与VO类字段之间的关系。如果某个字段需要映射到VO中不同的字段名,则可以通过@FieldName("目标字段名")指定。@ClassType:用于指定实体类的目标VO类。参数:定义目标VO类。参数deepCopy:是否对嵌套对象进行深度封装。实体类到VO的转换提供了两个核心方法::主入口方法,负责从实体类对象生成对应的 VO 对象。:递归处理实体类字段,并生成目标类对象。字段值设置方法:负责将计算后的字段值设置到目标VO对象中。

mocoll的博客 892

Java学习-异常-反射

在大型项目中可以定义一个根异常,从runtimeexception 派生;自定义异常时,应该提供多种构造方法。!!!!

m0_52533650的博客 1018

Java学习之反射

反射 作用: 把一个对象的成员变量、构造方法、成员函数(方法)转换为对象,然后进行动态调用。反射是框架设计的“灵魂”技术! 注意: 代码对象从创建到产生结果的过程中,要经历过编译,加载,运行,三个阶段。 编译:将 .Java 文件转换为字节码 .class 文件。(此时代码还存在于硬盘中) 加载:将 .class 文件加载到内存中,以便编辑器进行操作。 运行:使内存中的代码产生结果。 类加载器:...

bernardGao94的博客 100
上一篇: 如何使用Github管理项目代码
下一篇: 二叉树的遍历
dzz_bc
博客等级 码龄9年 10粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值