JAVA 反射 常用方法的示例 详解

什么是Java 反射?

 就是正在运行,动态获取这个类的信息。

反射机制的作用?

1.反编译  .class 文件到 .java 文件

2.通过反射机制 访问对象的构造方法,方法,属性等。

如何通过反射获取类?

   这里又三种方法,可以通过反射动态获取类。

    第一种:

   JAVA 反射 常用方法的示例 详解

    第二种:

        JAVA 反射 常用方法的示例 详解

第三种:

    JAVA 反射 常用方法的示例 详解

这三种有什么区别?

    总结:第一种通过forName() 方法 执行静态块,不执行动态块

                第二种通过.class 方法  不执行静态块和动态块

                第三种:需要创建对象,静态块,动态块都会执行

    注意:静态块 类只加载一次,如果已经加载则不会重复加载,动态块,每次new 对象都会执行。

效果如图:

    第一种:

    JAVA 反射 常用方法的示例 详解

    JAVA 反射 常用方法的示例 详解

第二种:

JAVA 反射 常用方法的示例 详解

第三种:

JAVA 反射 常用方法的示例 详解

java反射创建对象?

如何创建对象?

   通过实例化构造函数来创建对象。

  通过反射创建对象

    1.实例化 无参 构造函数

    JAVA 反射 常用方法的示例 详解

    2.实例化有参构造函数

    JAVA 反射 常用方法的示例 详解

 

通过反射获取方法,属性等API

getDeclaredMethods() :获取该类的所有方法

getReturnType() :获取该类方法的返回值

getParameterTypes() :获取该类方法传入参数

getDeclaredFields() :获取该类所有字段

setAccessible :允许访问私有成员

这里都是获取改类的?那么如何获取父类的呢?

 通过 子类.getSuperclass() 获取父类对象

getDeclaredMethods 获取该类的所有方法

JAVA 反射 常用方法的示例 详解

getReturnType()获取方法的返回值

JAVA 反射 常用方法的示例 详解

getParameterTypes() 获取该类方法的传入参数类型

JAVA 反射 常用方法的示例 详解

getDeclaredFields() 可以访问变量,注意这里只能访问公共成员变量私有变量是访问不到的

   JAVA 反射 常用方法的示例 详解

JAVA 反射 常用方法的示例 详解

    JAVA 反射 常用方法的示例 详解

setAccessible  设置可以访问私有成员变量

JAVA 反射 常用方法的示例 详解

 

转载于:https://my.oschina.net/960823/blog/1526805