反射配置文件并执行配置文件的类和内容
1.创建对应的类
package com.itheima;
public class Actor {
private String name;
private String print="西欧i";
public String getPrint() {
return print;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
System.out.println(name);
return name;
}
public Actor(String name){
this.name=name;
}
@Override
public String toString() {
return "com.itheima.Actor{" +
"name='" + name + '\'' +
'}';
}
}
2.类2
package com.itheima;
public class Sanyuan {
String name="三元";
public String getName() {
System.out.println(name);
return name;
}
}
3.创建配置文件并设置
className=com.itheima.Actor
methodName=getName
4.反射类
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Testjava {
public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
//加载数据
Properties or=new Properties();
FileReader fileReader = new FileReader("src\\class.txt");
or.load(fileReader);
fileReader.close();
String className = or.getProperty("className");
String methodName = or.getProperty("methodName");
//通过反射来使用
Class<?> aClass = Class.forName(className);
Constructor<?> constructor = aClass.getConstructor(String.class);
Object o = constructor.newInstance("123123123213");
Method method = aClass.getMethod(methodName);
method.invoke(o);
}
}
网友评论