利用Java的反射机制,编写一个自定义框架类:可以创建任意类的对象,并执行该对象中的任意方法。要求: (1)不改变该类的任何代码,可以创建任意类对象,并执行其中任意方法;(2)创建对象的类名和需执行的方法名存放到配置文件中(ref.properties);(3)配置文件、测试用类如下;ref.properties格式: className=ch7.reflection.Student methodName=study2 测试用Student类: public class Student { public void study() { System.out.println("我是学生,正在学习中..."); } private void study2() { System.out.println("我是学生2"); } protected void study3() { System.out.println("我是学生3"); } public void study4() { System.out.println("我是学生4"); } }
时间: 2023-11-28 22:49:05 浏览: 97
JAVA反射机制自定义框架测试代码
实现思路:
1. 读取配置文件,获取要创建的类名和要执行的方法名;
2. 利用反射机制创建类的对象;
3. 利用反射机制获取要执行的方法;
4. 执行方法。
代码实现如下:
```
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Properties;
public class ReflectionFramework {
public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
// 读取配置文件
InputStream input = ReflectionFramework.class.getClassLoader().getResourceAsStream("ref.properties");
Properties properties = new Properties();
properties.load(input);
String className = properties.getProperty("className");
String methodName = properties.getProperty("methodName");
// 利用反射机制创建类的对象
Class clazz = Class.forName(className);
Object obj = clazz.newInstance();
// 利用反射机制获取要执行的方法
Method method = clazz.getDeclaredMethod(methodName);
// 执行方法
method.invoke(obj);
}
}
```
测试用的Student类代码如下:
```
public class Student {
public void study() {
System.out.println("我是学生,正在学习中...");
}
private void study2() {
System.out.println("我是学生2");
}
protected void study3() {
System.out.println("我是学生3");
}
public void study4() {
System.out.println("我是学生4");
}
}
```
配置文件ref.properties内容如下:
```
className=Student
methodName=study2
```
运行ReflectionFramework类,输出结果为:
```
我是学生2
```
阅读全文