简单框架的构建

需求:

写一个“框架”,不能改变任何该类的前提下,帮助我们创建任意类的对象,并且执行其中任意方法

实现:

(1)配置文件
(2)反射

步骤:

(1)将所需要创建的对象的全类名(包名.类名)和需要执行的方法定义在配置文件中
(2)在程序中加载读取配置文件(使用Properties方法)
(3)使用反射技术来加载类文件进内存
(4)创建对象
(5)执行方法

代码演示:

这里就演示一个简单的Student类吧!
(1) 首先创建一个Student类,配备get和set方法,空参和满参,重写toString方法,一个sleep方法和school方法

Student类

public class Student {
private String name;
private int age;

public Student() {
}

public Student(String name, int age) {
this.name = name;
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

@Override
public String toString() {
return "Student{" +
"name='" + name + ''' +
", age=" + age +
'}';
}
public void sleep(){
System.out.println("sleep,打呼噜");
}
public void school(){
System.out.println("go to school");
}
}

(2)鼠标右键new一个File,输入文件名,配置文件中需要对象的全类名和执行的方法,这边演示Studnt类的两个方法,sleep和school

配置文件:

className=Student//(全类名,这里直接在src内操作,所有可以省略包名,一般都是包名.类名)
methodName=sleep//(sleep方法)
methodName1=school//(school方法)

(3)测试类,读取配置文件,使用反射技术,创建对象,执行方法

测试类:

import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.Properties;

public class ReflectTest {
public static void main(String[] args) throws Exception {
//创建Properties对象
Properties p = new Properties();
//获取class目录下的配置文件
ClassLoader classLoader = ReflectTest.class.getClassLoader();

InputStream is = classLoader.getResourceAsStream("puge.yiyan");
//调用load方法加载配置文件,转换为一个集合
p.load(is);
//获取配置文件中定义的数据
String className = p.getProperty("className");
String methodName = p.getProperty("methodName");
String methodName1 = p.getProperty("methodName1");
//加载该类进内存
Class cls = Class.forName(className);
//创建对象
Object obj = cls.newInstance();
//获取方法对象
Method method = cls.getMethod(methodName);
Method method1 = cls.getMethod(methodName1);
//执行方法
method.invoke(obj);
method1.invoke(obj);

}
}

执行结果:

sleep,打呼噜
go to school

简单框架的构建,你学会了吗?

posted @ 2021-05-06 19:38  一号程序员  阅读(370)  评论(0)    收藏  举报