反射类加载

java中的反射技术:运行时探究和使用编译时未知的类。

反射的核心原理:JVM在加载一个类的时候,会把该类的信息存放到一个Class对象中,该对象又被称为模板对象,JVM可以通过检索对象得到这个类的所有信息。

JDK提供API,允许程序员获取到类的Class对象,导致程序员也可以检索到这个类的信息, 即使这个类不是程序或程序员所实现的。

获取Class对象又3种方法。

1,通过类型名取Class对象,所有的类型都可以获得Class对象,这种方式没有动态性,以为在编译时已知类型名。

2,通过对象或实例对象获取Class对象(只能是非抽象类和数组类型),抽象类,接口,void,基本数据类型都不可以,以为在编写代码时已得到实例对象,所以也没有动态性。

3,通过类全名的字符串形式获得Class对象(它只接受类和接口),这是唯一的一种动态体现。(注意:必须填写类全名,先完成主动加载,然后返回Class对象)

通过Filed可以探究属性,constructor可以探究到构造,Method可以探究到方法。

探究到Constructor可以产生实例对象,使用newInstance方法可以的到对象。

探究到Method就可以通过invoke方法调用方法。

探究到Filed就可以通过get和set方法对属性赋值和修改。

反射是java中第三种产生对象的方法,产生对象时只能调用公共无参构造。私有属性在反射中操作都是调用它的get,set方法。反射是java的底层实现,它其实是破坏了封装。

原文地址:https://www.cnblogs.com/ZXiaocui/p/6261946.html