Java反射机制---01

反射机制是什么?

反射机制,个人认为就是通过反射这种方式,获取利用反射这个东西的自身的信息,对于程序来说,即能够在程序运行的时候获取自身的信息。在Java中,对于任意中的一个类,我们可以通过Java反射机制获取这个类的所有属性和方法,对于一个对象,我们可以通过Java反射机制调用这个对象的任意方法和属性,简单的来说,在java中只要给定类或者对象的名字,我们就可以通过反射机制来获得这个类或者这个对象的所有信息。

哪里用到了反射机制?

我认为在框架中,基本上都用到了反射机制,如果你自己要写一个框架的话,我认为你一定用到了反射机制,现在很多开源框架都已经封装好了,你基本上自己调用方法或者接口就可以了,不用你自己来写了,典型的有Hibernate,Spring等框架。记得学JDBC的时候,用过一段代码:
Class.forName("com.mysql.jdbc.Driver.class").newInstance();
但是,当时就知道那个是生成驱动对象的实例,也说了是利用反射的机制,但后面没怎么深究反射机制,直到后面工作时,才学了一点点反射的基础知识。其实,我们可以在xml或者properties文件中写好配置,然后在Java类中去解析xml或者properties中的内容,我们可以通过得到的字符串进行反射,得到某个类的Class的实例,这样的话,我们可以动态的配置一些东西,而不需要每次在代码中去new一个实例,以后要修改的话,直接取去修改配置文件即可,这样代码维护起来将会简单多了,再比如一些需求,你不能直接去new一个对象出来,因为你写这个接口的时候,你还不知道这个对象是什么,这样的话,你就可以通过反射机制来调用这个对象方法或者属性。

反射机制的优点和缺点

优点:运行时才绑定对象,体现出反射机制的灵活性,降低类与类之间的耦合性
            运行期判断任意一个对象所属的类
            运行时创建一个类的对象
            运行时判断任意一个类具有的成员变量和方法
            运行时调用一个对象的方法
缺点:性能问题,反射相当于一序列的解析,需要通过JVM做事情,所以性能要比直接创建差
            建议在业务中不要直接使用反射,因为反射是运行时才执行的,如果我们在一个对象中,操作错误比如传错了一个参数的值,导致出现一个运行时的bug,这样发现一个这样的bug很难,因为寻找一个运行时的bug比编译期的bug更难。

Java反射获取的信息

简便的说,就是类中有什么信息,反射就能获取什么信息,但是首先你需要知道这个类的名称。
通过传入的类的全名来创建Class的对象:
Class clazz = Class.forName(“className”);    注:className必须是类的全名,也就是应该包含包名,如:com.core.web.service.UserService
Class clazz = object.getClass();   注:object是传入的Object的参数如:
public void  reflectMethod(Object  object){
                ............       
}
Object  obj  = c.newInstance();   注:创建对象的实例

常使用的方法:
Class  clazz = object.getClass();
(以下的方法,是通过clazz直接调用)
获得构造函数的方法
Constructor  getConstrutor(Class[ ] params);  注:根据指定参数获得public构造器
Constructor[ ]  getConstructors();  注:获得public的所有构造器
Constructor getDeclaredConstructor(Class[ ] params);注:根据指定参数获得public和非public的构造器
Constructor[ ]  getDeclaredConstructors();  注:获得public和非public的所有构造器
获得类中方法的方法
Method  getMethod(String name,Class[ ] params); 注:根据方法名,参数类型获得方法
Method[ ] getMethods();  注:获得所有的public方法
Method  getDeclaredMethod(String name,Class[ ] params);注:根据方法名和参数类型,获得public和非public的方法
Method[ ]  getDeclaredMethods(); 注:获得所有的public和非public方法
获得类中属性的方法
Field  getField(String name); 注:根据变量名得到相应的public变量
Field[ ]  getFields();注:获得类中所有的public方法
Field  getDeclaredField(String  name); 注:根据方法名获得public和非public的变量
Field[ ]  getDeclaredFields();注:获得类中所欲的public和非public方法

内容概要:本文探讨了在MATLAB/SimuLink环境中进行三相STATCOM(静态同步补偿器)无功补偿的技术方法及其仿真过程。首先介绍了STATCOM作为无功功率补偿装置的工作原理,即通过调节交流电压的幅值和相位来实现对无功功率的有效管理。接着详细描述了在MATLAB/SimuLink平台下构建三相STATCOM仿真模型的具体步骤,包括创建新模型、添加电源和负载、搭建主电路、加入控制模块以及完成整个电路的连接。然后阐述了如何通过对STATCOM输出电压和电流的精确调控达到无功补偿的目的,并展示了具体的仿真结果分析方法,如读取仿真数据、提取关键参数、绘制无功功率变化曲线等。最后指出,这种技术可以显著提升电力系统的稳定性与电能质量,展望了STATCOM在未来的发展潜力。 适合人群:电气工程专业学生、从事电力系统相关工作的技术人员、希望深入了解无功补偿技术的研究人员。 使用场景及目标:适用于想要掌握MATLAB/SimuLink软件操作技能的人群,特别是那些专注于电力电子领域的从业者;旨在帮助他们学会建立复杂的电力系统仿真模型,以便更好地理解STATCOM的工作机制,进而优化实际项目中的无功补偿方案。 其他说明:文中提供的实例代码可以帮助读者直观地了解如何从零开始构建一个完整的三相STATCOM仿真环境,并通过图形化的方式展示无功补偿的效果,便于进一步的学习与研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值