Java
的反射基本使用和运行原理
反射机制运行原理:
1. Jvm
扫描 java
文件,读取文件的信息(构造,属性,方法,实现的接口…)
2. 将读取的信息保存在一个 类对象( java.lang.Class
包的对象)
3. 通过类对象的 newInstance
方法获得对象.
使用步骤:
1. 首先通过 `Class.forName(“全限定名”);`
2. 接收返回的类的对象 `Class` 变量名 = `Class.forName(“全限定名”);`
3. Object` 变量名= `变量名.newInstance();`(反射)返回一个实例对象 `Object` 类型
获得类对象的三种方式:
1. Class.forName(“全限定名”);
2. 类.class
3. 对象.getClass();
首先得再项目工程里创建实体类,如下图:
方式一:
使用 全限定名,获取类对象
代码如下:
package com.to.demo;
import com.to.entity.zj_articles;
/**
*
* Test refle Mechanism Demo1
*
* @author To be happy oh
*
*/
public class demo1 {
/**
* @param args 参数
* @throws Exception 这里的话就使用异常抛出了,实际开发中,必须使用异常处理
*/
public static void main(String[] args) throws Exception {
// 1、 获取类对象
Class<?> zj = Class.forName("com.to.entity.zj_articles");
// 2、实例化对象,这里需要给对象进行强制转换
zj_articles newInstance = (zj_articles) zj.newInstance();
// 3、输出对象信息
System.out.println(newInstance);
}
}
控制台如下:
哈哈 但这里并没有对象信息
方式二:
可直接通过 类名称 点出类对象
代码如下:
package com.to.demo;
import com.to.entity.zj_articles;
/**
*
* Test refle Mechanism Demo2
*
* @author To be happy oh
*
*/
public class demo2 {
/**
* @param args 参数
* @throws Exception 这里的话就使用异常抛出了,实际开发中,必须使用异常处理
*/
public static void main(String[] args) throws Exception {
// 1、获取 object 对象
Class<zj_articles> className = zj_articles.class;
// 2、实例化对象,这里需要给对象进行强制转换
zj_articles newInstance = (zj_articles) className.newInstance();
// 3、输出对象信息,哈哈 但这里并没有对象信息
System.out.println(newInstance);
}
}
方式三:
想要通过 对象,获取类对象
代码如下:
package com.to.demo;
import com.to.entity.zj_articles;
/**
*
* Test refle Mechanism Demo3
*
* @author To be happy oh
*
*/
public class demo3 {
/**
* @param args 参数
* @throws Exception 这里的话就使用异常抛出了,实际开发中,必须使用异常处理
*/
public static void main(String[] args) throws Exception