java反射技术

Java反射技术是什么 Java反射技术是什么 Java反射技术是指在运行时动态获取类的信息,并对类进行操作的一种技术。Java反射技术可以让程序在运行时动态地创建对象、调用方法、获取属性等,使程序更加灵活、扩展性更强。 阅读详情

反射技术代码:

package myreflect;

import org.junit.Test;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.Properties;
import java.util.Set;

public class T1 {
public static void main(String[] args) throws IllegalAccessException, InstantiationException, ClassNotFoundException {
/**
* 获取反射技术的三种方式
*
/
//1.使用Class获取
Class cls1 = Preson.class;
Preson preson1 = cls1.newInstance();
preson1.show();
//2、通过.getClass方式得到字节码对象
Class<? extends Preson> cls2 = new Preson().getClass();
Class<? extends Preson> cls22 = new Preson().getClass();
Preson preson2 = cls2.newInstance();
Preson preson22 = cls22.newInstance();
preson2.show();
System.out.println(“判断不同反射技术得到的两个对象是否式一个:”+(preson1preson2));
System.out.println(“判断不同反射技术得到的两个对象是否式一个:”+(cls2
cls22));
System.out.println(“判断同一种反射技术得到的两个对象是否式一个:”+(preson2==preson22));
// //3、通过Class.forName(文本路径)的形式
// String path = “com.tude.cn.myreflect.Preson”;
// Class prethon3 = Class.forName(path);
}
// Set strings = properties.stringPropertyNames();
// for (String s:strings){
// System.out.println(properties.get(s));
// }
@Test
public void mq1() throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchFieldException {
//3、通过Class.forName(文本路径)的形式
String path = “myreflect.Preson”;
Class preson3 =(Class) Class.forName(path);
Preson preson33 = (Preson) preson3.newInstance();
Field field = preson3.getDeclaredField(“age”);
//改变值
field.setAccessible(true);
field.set(preson33,22);
Object o = field.get(preson33);
System.out.println(o);
preson33.show();
}
/
*
* 利用Class.forname的方式getconstruct获得构造器
*/
@Test
public void t1() throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
String path = “myreflect.Preson”;
Class preson = (Class)Class.forName(path);
Constructor constructor = preson.getDeclaredConstructor();//无参构造器
Constructor constructor1 = preson.getDeclaredConstructor(String.class,int.class);//无参构造器
Preson p = (Preson) constructor.newInstance();
Preson p1 = (Preson) constructor1.newInstance(“白菜”,50);
}

/**
 * 利用第二种反射的方式获得构造器
 *  Class<? extends Preson> cls2 = new Preson().getClass();
 *         Preson preson2 = cls2.newInstance();
 */
@Test
public void t2() throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
    //2、通过.getClass方式得到字节码对象
    Class<? extends Preson> cls2 = new Preson().getClass();
    Constructor constructor = cls2.getDeclaredConstructor();
    Constructor constructor1 = cls2.getConstructor(String.class);
    Preson p = (Preson)constructor.newInstance();
    Preson p1 = (Preson)constructor1.newInstance("cvhj");
    Constructor constructor2 = cls2.getConstructor(int.class);
    Preson p2 = (Preson)constructor2.newInstance(22);
    p2.setName("fghjkl");
    System.out.println(p2.getName());
}
/**
 * 利用第一种反射技术的方式获得构造器
 */
@Test
public void t3(){
    Preson preson = new Preson("hi解开纽扣",32);
    System.out.println(preson.toString());
}

/**
 * 利用field方法获取值
 * 利用第一种反射方式
 *
 */
@Test
public void t4() throws IllegalAccessException, InstantiationException, NoSuchFieldException {
    //1.使用Class获取
    Class<Preson> cls1 = Preson.class;
    Preson preson1 = cls1.newInstance();
    Field field = cls1.getField("name");
    field.set(preson1, "办卡实现");

// System.out.println(“名字是:”+preson1.name);
//获取属性值
Object o = field.get(preson1);
System.out.println(o);
}

@Test
public void t5() throws IllegalAccessException, InstantiationException, NoSuchFieldException {
    //1.使用Class获取
    Class<Preson> cls1 = Preson.class;
    Preson preson1 = cls1.newInstance();
    Field[] field = cls1.getFields();
    for (int i = 0; i < field.length; i++) {
        field[i].setAccessible(true);
        //获取属性值
        Object password = field[i].get(preson1);
        System.out.println(field[i].getName()+"----->"+password);
    };

// System.out.println(“名字是:”+preson1.age);
}
}

package myreflect;

public class Preson {
    protected String name = "存储技术的";
    private int age = 12;
    private String major = "DRFGUYHIJOK";

    public Preson() {
        System.out.println("无参构造器!");
    }

    public Preson(String name, int age) {
        System.out.println("有参构造器!");
        this.name = name;
        this.age = age;
    }

    public Preson(String name) {
        System.out.println("有参构造器!");
        this.name = name;
    }

    public Preson(int age) {
        System.out.println("有参构造器!");
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Preson{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    private void show1(String a){
        System.out.println("私有化显示名字为:"+name);
    }
    public void show(){
        System.out.println("显示名字为:"+name);
    }
}
全面掌握Java反射技术课程 本文还有配套的精品资源,点击获取 简介:Java反射技术是一项允许程序在运行时检查和操作其他类、接口、对象和方法的强大工具。本培训课程深入讲解了Java反射机制的基础知识,包括Class类的使用、类结构的获取、高级反射操作、动态代理机制以及反射在工厂设计模式中的应用。课程旨在帮助开发者掌握Java的动态特性,提升编程的灵活性和扩展性。 1. Java反射技术概述 ... 阅读详情

相关推荐

南京邮电大学《数学实验》模块二(函数的迭代)参考答案

【代码】南京邮电大学《数学实验》模块二(函数的迭代)参考答案。

qq_1293730064的博客 3万+

反射技术(架构师必备)

一、什么是反射? 先了解一下什么是类?什么是对象? 在现实生活中先存在具体的对象,然后很多对象之间存在对象相似的特征和行为,人们为了描述方便,将具有很多相似特征和行为的对象抽取成类。也就是说类用来描述对象,将对象的的行为和特征都描述出来。 反射则是用来描述类的,在描述类的时候,细分多层:类本身(Flass),类的属性(Field、)、类中的方法(Method)、类的构造方法(Constructor)、类所在的包(Package)重点。 图解反射与类之间的关系二、反射如何描述类 Class:用

因为热爱,所以坚持,记录工作中的乐趣 677

2024高教社杯数学建模国赛B题丨国一原创论文解析及源码超详细分享!

继续分享一篇2024国赛B题的国奖论文,包含可运行源代码jupyter,国赛B题通常比较聚焦实际复杂系统的多目标优化决策,主要偏重算法实现与概率建模解决开放性的管理问题。而且高度开放,无标准答案,学科交叉复杂,如资源调度、交通优化、海洋探测等。比较建议有一定统计学基础的同学参加。

ihui永不放弃 6738

Java反射技术

Java中的反射是指在运行时动态地获取和操作类信息的能力。通过反射,可以在运行时获取类的构造方法、方法、字段等信息,并且可以在不知道类名的情况下创建对象、调用方法和访问字段。使用反射机制可以极大地提高程序的灵活性和可扩展性,但也会带来性能上的损失。

qq_29575635的博客 235

Python实战:5分钟搞定抖音无水印视频下载(附完整代码)

本文系统介绍了抖音无水印视频下载的多种技术方案,重点解析了抖音视频的获取逻辑与去水印原理。文章提供了从零代码的浏览器插件到可编程的Python脚本的完整实现路径,并附带了详细的代码示例,帮助用户快速构建自己的抖音视频下载工具箱。

weixin_29089057的博客 847

STM32duino LSM6DSO驱动库:低功耗IMU工程化实践

惯性测量单元(IMU)是智能终端与工业设备实现运动感知的核心传感器,其性能关键在于数据精度、实时响应与系统功耗的协同优化。LSM6DSO作为集成加速度计与陀螺仪的六轴MEMS器件,依托片上有限状态机(FSM)和机器学习核心(MLC),支持自由落体检测、计步器、6D方向识别等硬件自治功能,显著降低主控CPU负载。在STM32平台下,通过深度耦合HAL/LL库、显式引脚管理、DMA加速SPI传输及EXTI中断协同,可实现亚毫秒级事件响应与微安级待机功耗。本文聚焦STM32duino生态中LSM6DSO驱动的工程

weixin_36304957的博客 551

Java 中的反射机制(两万字超全详解)

文章目录一、反射概述1. 什么是反射?2. 反射机制原理3. 反射优点和缺点4. 类加载概述5. 类加载各阶段完成的功能5.1 加载阶段5.2 连接阶段——验证5.3 连接阶段——准备5.4 连接阶段——解析5.5 初始化阶段二、Class 类1. 动态加载2. 小结三、访问字段1. 获取字段值2. 设置字段值3. 小结四、调用方法1. 调用方法2. 调用静态方法3. 调用非 public方法4. 多态5. 小结五、调用构造方法六、获取继承方法1. 获取父类的Class2. 获取interface3. 继承

林二月的博客 3万+

无人驾驶-2024-09-智能驾驶与机器视觉09:视觉与多传感器融合

从本章开始,我们将详细介绍视觉与多传感器融合技术。自动驾驶中常用的传感器都有其优势和局限性,单一传感器无法应对复杂的驾驶场景。多传感器融合技术旨在综合利用不同的传感器优势,提升感知的精度和鲁棒性。本章首先介绍多传感器融合的相关概念,之后详细介绍典型的融合方法。

u013250861的博客 593

Java反射详解

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.反射就是把java类中的各种成分映射成一个个的Java对象。

weixin_74268571的博客 2万+

基于R-CNN深度学习的常见手势识别系统:数据集、模型和UI界面的完整实现

卷积神经网络(CNN):用于从图像中提取特征。区域提议网络(RPN):用于生成可能包含手势的候选区域。:将候选区域调整为固定大小,并进行进一步的分类和回归。接下来,我们需要加载一个预训练的Faster R-CNN模型,并对其进行微调。我们将使用# 加载预训练的Faster R-CNN模型# 获取分类器的输入特征数# 替换分类器头部,设置为我们数据集的类别数(假设有5类手势)

YOLO 1000

【全网首发】2026华为OD双机位C卷 机考真题题库含考点说明以及在线OJ (Java)

如果你收到的是双机位C卷考试通知,需要针对性地调整备考策略。自2025年11月19日起,华为OD机试已正式从双机位A卷切换至。复杂度明显提升,需要组合多个算法点。题面相对简单,直接考查编程基本功。考查问题分析、算法选择和优化能力。通常为1-2个核心算法点的应用。

算法大师! 167

14--反射技术

1、反射技术 1.1、介绍反射 Java中的反射:它是使用非常规的手段获取某个class文件中的内容(成员变量、构造函数、普通函数等)。不使用new关键字创建对象,而是通分析过class文件中的内容,获取到类的对象,进而可以让类中的函数运行。 所有的框架(Struts2、hibernate、spring、springMVC、mybatis、springboot等)它们的底层全部在使用反射技术...

QB哥欢迎您 660

华为od统一考试B卷【宜居星球改造计划】Java&Go 实现

XXX年,人类通过对火星的大气进行宜居改造分析,使得火星已在理论上具备人类宜居的条件,由于技术原因,无法一次性将火星大气全部改造,只能通过局部处理形式,假设将火星待改造的区域为row * column的网格每个网格有3个值,宜居区、可改造区、死亡区,使用YES、NO、NA代替,YES表示该网格已经完成大气改造,NO表示该网格未进行改造,后期可进行改造,NA表示死亡区,不作为判断是否改造完成的宜居,无法穿过 初始化下,该区域可能存在多个宜居区,并且每个宜居区能同时在每个太阳日单位向上下左右四个方向的相邻格子进

MISAYAONE的博客 1万+

Java反射技术详解

前言 相信很多人都知道反射可以说是Java中最强大的技术了,它可以做的事情太多太多,很多优秀的开源框架都是通过反射完成的,比如最初的很多注解框架,后来因为java反射影响性能,所以被运行时注解APT替代了,java反射有个开源框架jOOR相信很多人都用过,不过我们还是要学习发射的基础语法,这样才能自己写出优秀的框架,当然这里所讲的反射技术,是学习Android插件化技术、Hook技术等必不可...

黄林晴 24万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

java 反射技术实例,什么是反射技术?Java中最常用的反射技术实例

什么是反射技术?动态获取指定类以及类中的内容(成员),并运行其内容。应用程序已经运行,无法在其中进行new对象的建立,就无法使用对象。这时可以根据配置文件的类全名去找对应的字节码文件,并加载进内存,并创建该类对象实例。这就需要使用反射技术完成,还有就是在一个类中,为了不让外界访问到有的属性和方法,通常将其设置为private,这时我们就可以java反射带来的便利访问类的私有属性及方法:最常用的反射...

weixin_31884143的博客 123

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

JAVA中的反射技术

之前的学习一直都没有文字记录,发现过一段时间之后某些知识点就会遗忘,所以今后所学习的知识点将记录下来,以便以后用来复习。 这次来说说JAVA中的反射技术,说起反射技术我对于它一直以来都是一种懵逼的状态,有一种非常排斥它的心理。在实际中JAVA的反射机制非常重要,我们使用的许多的开发框架都是基于反射实现的。如果不能很好的理解学习反射技术将会对今后的学习或技术提升将是一个非常大的阻碍。 什么是反射? ...

zbj17602900546的博客 1448

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

JAVA之反射技术总结

目录概述好处三个阶段获取class对象Source源代码阶段获取Class类对象阶段获取Runtime运行阶段获取样例使用class对象Student类源码获取成员变量使用成员变量综合样例获取构造方法使用构造方法综合样例获取成员方法使用成员方法综合样例反射技术综合案例---创建任意对象 概述   设计框架的灵魂 框架:半成品软件。可以在框架的基础上进行软件开发,简化编码。 反射:将类的各个组成部分封装为其他对象 好处 可以在程序运行过程中,操作这些对象。 可以解耦,提高程序的可扩展性。 三个阶段

Eva_xiaoxi的博客 326

Java 反射技术

       Java 反射技术应用广泛,它能够配置:类的全限定名、方法和参数,完成对象的初始化,甚至是反射某些方法。这样就可以大大增强 Java 的可配置性,Spring IoC 的基本原理也是如此,当然 Spring IoC 的代码要复杂的多。        Java 的反射内容繁多,包括对象构建、反射方法、注解、参数、接口等。本文主要讲解对象构建(包括没有参数的和有参数的构建方法)和方法的反...

chunqizhi 482

java反射技术_Java反射技术详解

反射技术:其实就是动态加载一个指定的类,并获取该类中的所有的内容。而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员。简单说:反射技术可以对一个类进行解剖。反射的好处:大大的增强了程序的扩展性。反射的基本步骤:1、获得Class对象,就是获取到指定的名称的字节码文件对象。2、实例化对象,获得类的属性、方法或构造函数。3、访问属性、调用方法、调用构造函数创建对象。获...

weixin_35599418的博客 126

Java中的反射技术

在上面的示例代码中,我们使用了Java中的反射技术获取了ArrayList类的信息,操作了它的属性和调用了它的方法,最后还创建了一个新的ArrayList实例。Java中的Class类提供了获取类的信息的方法,例如getName()方法可以获取类的名称,getFields()方法可以获取类的公共属性,getMethods()方法可以获取类的公共方法等。Java中的反射技术是一种强大的工具,它可以让程序员在运行时动态地获取类的信息并操作类的属性、方法和构造函数等。

码奴一只猿 103

java的反射技术_Java:反射技术

本文内容: 产生反射技术的需求反射技术的使用一个小示例首发日期:2018-05-10产生反射技术的需求:项目完成以后,发现需要增加功能,并且希望增加功能并不需要停止项目运行。在希望不关停项目运行的情况下,于是考虑到将功能都放到一个单独的项目之外的模块中,每一个功能实现都从这个模块中获取【实际上这个考虑应该是项目开始前就考虑,这个例子可能不是很好】。于是就有了反射的产生。(这种思想有点类似工厂模式,...

weixin_33387339的博客 107

Java的反射技术

1、Java 反射技术   Java反射技术应用广泛,它能够配置:类的全限定名、方法和参数,完成对象的初始化,甚至是反射某些方法。这样可以大大增强Java的可配置性,如Spring IoC 的基本原理也是反射,当然Spring IoC 的代码要复炸得多,还有其他的技术结合。   Java 的反射内容繁多, 包括对象的构建、反射方法、注解、参数、接口等。这次主要讲一下对象的构建和反射的方法。在Java中,反射是通过包java.lang.reflect.* 来实现的。 2、通过反射构建对象   在...

gman344的博客 166

[原创]java反射技术(一)

java的反射技术功能十分强大,整理一些资料!!(如需转载,请注明出处!)Lesson: 检测类examing class1.Retrieving Class Objects 获取一个Class对象(metadata)a,从对象的实例获取。Class c = mystery.getClass();//(return Class)b,从子类的实例获取TextField t = new

lxblg的BLOG 2601
上一篇: Java枚举类
下一篇: java服务器数据·库·连接 jar 包的方法
惠溪崽崽
博客等级 码龄7年 4粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值