原理:
通过反射动态读取类名以及类中的方法,其实就是通过读取.txt的文件从而动态记载类名和方法
1.首先先创建一个.txt的文件内容为
classname=包名.类名
methodsname=方法名
2. 读取文件用Propertys 将文件中的类名读取出来
Properties prop=new Properties();//创建prop对象
3.通过load()方法,将文件加载进来
prop.load(new FileReader("class.txt"));
4.通过getProperty()获取类名
prop.getProperty("classname");
5.通过getProperty()获取方法名
prop.getProperty("methodsname");
6.因为类名在文件里面,需要获取文件来拿去,所以需要把类名读进来
Class.forName("classname");
7.上一步已经拿取到所读文件的反射入口,获取方法
入口名.getMethod("methodsname");
8.调用方法用invoke(对象,参数列表)方法
method.invoke(perClass.newInstance);
public static void Demo6() throws IOException, NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException {
//读文件用Properties 将文件中的类名读取出来
Properties prop=new Properties();
//用prop来加载txt文件,通过load()方法,将文件加载进来
prop.load(new FileReader("class.txt"));
//通过getProperty方法获取类名,拿到类名之后放到Class.forName()中
String classname=prop.getProperty("classname");
//通过getProperty方法来获取方法名
String methodsname=prop.getProperty("methodsname");
Class<?> perClass=null;
//拿去入口的类名在文件里面,需要获取文件来拿取,来吧类名给读取进来
try {
perClass= Class.forName("classname");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//已经拿到所要读取文件的反射入口
//接下来来获取方法
Method method=perClass.getMethod("methodsname");
//调用方法用invoke(对象,参数列表)方法
method.invoke(perClass.newInstance());
}