本任务要求通过读取配置文件对类进行实例化,具体如下: (1)获取test.properties配置文件中的className属性值(类的全限定类名),利用反射对该类进行实例化。 (2)获取test.properties配置文件中的methodName属性值(方法名),利用反射获取对象方法,并执行该方法。
时间: 2024-03-24 14:36:56 浏览: 18
好的,那么首先需要读取配置文件test.properties,可以使用Java中的Properties类来读取配置文件。读取配置文件后,可以通过getProperty()方法获取className和methodName的值,然后利用反射进行实例化和方法调用。
具体实现可以参考下面的代码:
```java
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Properties;
public class Test {
public static void main(String[] args) {
Properties props = new Properties();
InputStream in = Test.class.getClassLoader().getResourceAsStream("test.properties");
try {
props.load(in);
String className = props.getProperty("className");
String methodName = props.getProperty("methodName");
Class<?> clazz = Class.forName(className);
Object obj = clazz.newInstance();
Method method = clazz.getMethod(methodName);
method.invoke(obj);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
class Person {
public void sleep() {
System.out.println("Person is sleeping");
}
}
class Student extends Person {
@Override
public void sleep() {
System.out.println("Student is sleeping");
}
}
```
在这个示例中,首先通过Properties类读取配置文件test.properties,然后获取className和methodName的值。接着使用Class.forName()方法加载类,使用newInstance()方法创建对象,使用getMethod()方法获取方法,最后使用invoke()方法调用方法。这里的示例类是Person和Student,Person类中定义了一个sleep()方法,Student类继承自Person类并重写了sleep()方法。