java现在有一个项目,项目中创建了一个Person类,在Person类中定义了一个sleep()方法。在工程中还定义了一个Student类继承Person类,在Student类中重写了Person类的sleep()方法。项目有一个配置文件,名称为test.properties,在配置文件中配置了一个className属性和一个methodName属性,className属性值是类的全限定类名,methodName属性值是方法名。 本任务要求通过读取配置文件对类进行实例化,具体如下: (1)获取test.
时间: 2024-03-23 10:44:00 浏览: 65
Java面向对象(高级)- 抽象类与抽象方法(或abstract关键字)
以下是一个简单的Java代码示例,实现了读取配置文件对类进行实例化并调用方法的功能:
```
import java.io.FileInputStream;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Properties;
public class ConfigDemo {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException, IOException {
Properties props = new Properties();
FileInputStream fis = new FileInputStream("test.properties");
props.load(fis);
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);
}
}
```
这个示例中,首先读取配置文件test.properties的属性值className和methodName。然后,利用反射机制获取该类的Class对象,并实例化该类的对象。最后,通过反射机制获取指定的方法并调用它。这里只演示了方法的调用,如果方法需要传递参数,还需要进行相应的处理。同时,这里没有对异常进行处理,实际应用中需要根据具体情况进行异常处理。
阅读全文