Java基础反射reflect

本文深入解析Java反射机制,涵盖Class、Constructor、Method和Field类的使用,以及如何在运行时分析类、创建对象和调用方法。通过反射,Java程序能获取并操作类的内部结构,实现动态编程。
概述
能够分析类能力的程序成为反射reflective。反射机制的功能及其强大,再下面可以看到,反射机制可以用来:

在运行时分析类的能力
在运行时查看对象,例如,编写一个toString()方法供所有类使用。
实现通用的数组操作代码。
利用Method对象,这个对象很像C++中的指针函数。
Class类
在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识。这个信息跟踪着每个对象所属的类。

获取类字节码方式
Class.forName(); 静态方法调用
Class<?> forName = Class.forName("path");

类型.class
Class<?> cls = Person.class;

对象.class
Person person = new Person();
Class<?> cls = person.class;

常用方法
// 返回描述类名为className的Class对象
static Class forName(String className);

// 返回类的实例对象,调用的是默认无参构造方法
Object newInstance();

Constructor类
/**
* 构造一个这个构造器所属类的新实例
* @param args 这个构造方法所需的形式参数
*/
Object newIntance(Object[] args);

/**
* 获取字节码中所有公开的构造方法
*/
Constructor[] getConstructors();

/**
* 获取所有的构造的方法,包括private修饰的
*/
Constructor<?>[] getDeclaredConstructors();

/**
* 获取指定形参类型,和数量的公开的构造方法
*/
Constructor<T> getConstructor(Class<?>... parameterTypes);

/**
* 获取指定形参类型,和数量的任何修饰符的构造方法
*/
Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes);

Method类
/**
* 获取所有公开方法
*/
Method[] getMethods();

/**
* 获取所有方法,包括私有方法
*/
Method[] getDeclaredMethods();

/**
* 获取公开方法
* @param name 方法的名称
* @param parameterTypes 形式参数
*/
Method getMethod(String name, Class<?>... parameterTypes)

/**
* 获取指定方法,包括私有方法
* @param name 方法的名称
* @param parameterTypes 形式参数
*/
Method getDeclaredMethod(String name, Class<?>... parameterTypes)
/**
* 调用方法
* @param obj 方法被调用对象
* @param args 形式参数列表
*/
Object invoke(Object obj, Object... args)

Field类
/**
* 获取所有公开成员变量
*/
Field[] getFields();

/**
* 获取所有成员变量
*/
Field[] getDeclaredFields()

/**
* 获取指定名称的公开的成员变量
*/
Field getField(String name)

/**
* 获取指定名称的成员变量
*/
Field getDeclaredField(String name)

/**
* 设置obj指定成员变量值value
* @param obj 需要修改的变量
* @param value 修改的值
*/
void set(Object obj, Object value)

/**
* 获取obj对象的指定成员变量值
*/
Object get(Object obj)

暴力反射
Field name = forName.getDeclaredField("name");
name.setAccessible(true);
MATLAB主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性内容概要:本文主要介绍了一种在MATLAB环境下实现的主动噪声和振动控制算法,该算法针对较大的次级路径变化具有较强的鲁棒性。文中详细阐述了算法的设计原理与实现方法,重点解决了传统控制系统中因次级路径动态变化导致性能下降的问题。通过引入自适应机制和鲁棒控制策略,提升了系统在复杂环境下的稳定性和控制精度,适用于需要高精度噪声与振动抑制的实际工程场景。此外,文档还列举了多个MATLAB仿真实例及相关科研技术服务内容,涵盖信号处理、智能优化、机器学习等多个交叉领域。; 适合人群:具备一定MATLAB编程基础和控制系统理论知识的科研人员及工程技术人员,尤其适合从事噪声与振动控制、信号处理、自动化等相关领域的研究生和工程师。; 使用场景及目标:①应用于汽车、航空航天、精密仪器等对噪声和振动敏感的工业领域;②用于提升现有主动控制系统对参数变化的适应能力;③为相关科研项目提供算法验证与仿真平台支持; 阅读建议:建议读者结合提供的MATLAB代码进行仿真实验,深入理解算法在不同次级路径条件下的响应特性,并可通过调整控制参数进一步探究其鲁棒性边界。同时可参考文档中列出的相关技术案例拓展应用场景。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值