java反射实例_关于java反射的一个案例

案例:

*需求:“写一个框架”,可以帮我们创建任意类的对象,并且执行其中任意的方法。

*实现:

1.配置文件

2.反射

*步骤:

1.将需要创建的对象的全类名和需要执行的方法定义在配置文件中

2.在程序中加载读取配置文件

3.使用反射技术来加载类文件进内存

4.创建对象

5.执行方法

具体实现部分:

新建一个Java项目,项目结构如下:

Person实体类代码:

package com.shao.li;

public class Person {

public void eat(){

System.out.println("eat..........");

}

}

Student实体类代码:

package com.shao.li;

public class Student {

public void sleep(){

System.out.print("sleep......");

}

}

pro.propertiesp配置文件内容:

className=com.shao.li.Person

methodName=eat

ReflectTest代码:

package com.shao.li;

import java.io.InputStream;

import java.lang.reflect.Method;

import java.util.Properties;

/**

* 框架类

*/

public class ReflectTest {

public static void main(String[] args) throws Exception {

//可以创建任意类的对象,可以执行任意方法

/*

前提,不能改变该类的任何代码,可以创建任意类的对象,可以执行任意方法

*/

/*Person p =new Person()

p.eat();

*/

/*Student stu = new Student();

stu.sleep();

*/

//1.加载配置文件

//1.1创建Properties对象

Properties pro= new Properties();

//1.2加载配置文件,转换为一个集合

//1.2.1获取class目录下的配置文件

ClassLoader classLoader=ReflectTest.class.getClassLoader();

InputStream is = classLoader.getResourceAsStream("pro.properties");

pro.load(is);

//2.获取配置文件中定义的数据

String className=pro.getProperty("className");

String methodName = pro.getProperty("methodName");

// 3.加载该类进内存

Class cls=Class.forName(className);

//4.创建对象

Object obj = cls.newInstance();

//5.获取方法对象

Method method = cls.getMethod(methodName);

//6.执行方法

method.invoke(obj);

}

}

执行ReflectTeste'类的main方法,输出结果为:

eat..........

Process finished with exit code 0

改变配置文件pro.properties的内容为:

className=com.shao.li.Student

methodName=sleep

再次执行'程序,结果为:

sleep......

Process finished with exit code 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值