大秧歌剧情分集介绍,二十五史pdf,国际老虎日
例如:成员变量(字段),构造方法,方法,类名,包名,接口等。
优点:动态创建和编译对象(灵活)
动态编译:指程序在运行时确定对象类型,绑定对象。动态编译最大限度的发挥了java的灵活性,体现了多态的应用,降低了类之间的耦合性。bug一般会出在运行时期。反之为静态编译。
静态编译:在编译期间确定对象类型,绑定对象,即通过,bug一般会出在编译时期(不灵活)。
例子:一个大型的软件,不可能一次就把它设计的很完美,当这个程序编译后,发布了。当发现需要更新某些功能时,我们不可能要求用户把以前的卸载,再重新安装新的版本。假如这样的话,这个软件肯定是没有多少人用的。如果采用静态编译的话,就需要把整个程序都重新编译一遍(重装软件),才可以实现功能的更新。而采用反射机制的话,就可以不用卸载,只需要在运行时才动态的创建和编译,就可以实现功能的更新。
缺点:对性能有所影响。使用反射基本上是一种解释操作,我们可以告诉jvm,我们希望做什么并且它满足我们的要求。这类操作总是慢于只执行相同的操作。
类对象:类加载的产物,封装了一个类的所有信息(类名、父类、接口、方法、构造方法)
类的对象:基于某个类new出来的对象,也称为实例对象
关键字:class
获取类对象的三种方式:
类名.class ;
对象(类的对象).getclass() ;
class.forname(包全名); // 例如 “java.util.arraylist”
反射常用api
反射包为:java.lang.reflect
class
getname();以string的形式返回此class对象所表示的实体(类、接口、数组类、基本类型或void)名称。
getpackage();获取此类的包。
===========================================
getfields();//获取该class的所有公开字段(包括父类)
getfield(string name);//根据name获取对应的field对象
getdeclaredfields();//获取当前类的所有字段;(不包括父类)
getdeclaredfield(string name);//更具name匹配当前类相符合的类;
============================================
getmethods();//获取此类和父类所有的公开方法
getmethod(string name,class<?>... parametertypes);//前一个参数为 方法名,后一个参数是入参,需要根据实际需求添加参数。
getdeclaredmethods();//获取此类中所有的方法(不包括夫类);
getdeclaredmethod(string name,class<?>... parametertypes);//根据name和入参获取相关方法对象。
============================================
至于其它方法,请参考
我的感言:
反射是一们相对偏底层的技术,往往用在一个工具或者框架的实现上。反射在java中虽然非常重要,我们不掌握好像也不是很影响开发,但是我还是建议您多学一点,咱们学技术的,得技术过硬!
作者:爱学习的小磊
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
浅析我对 String、StringBuilder、StringBuffer 的理解
使用IDEA搭建SSM框架的详细教程(spring + springMVC +MyBatis)
Springboot整合freemarker 404问题解决方案
引入mybatis-plus报 Invalid bound statement错误问题的解决方法
网友评论