需求:Java之利用获取class对象文件,不修改代码,获取不同类的不同方法(只修改 文本),类分别为Cat类和Dog类
文本内容:
#ClassName=com.lanou3g.reflect.Dog
#Method=eat
ClassName=com.lanou3g.reflect.Cat
Method=speak
cat类
public class Cat {
public void speak() {
System.out.println("猫叫");
}
}
dog类
public class Dog {
public void eat() {
System.out.println("吃骨头");
}
}
主函数
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.Properties;
/*
* 利用一段代码
*/
public class Demo04 {
public static void main(String[] args) throws IOException, Exception {
// 读文件
FileInputStream fis = new FileInputStream("src/test.properties");
// 创建properties对象
Properties pt = new Properties();
// 加载文件,读到文件
pt.load(fis);
// 获取类名和方法
String className = pt.getProperty("ClassName");
String method = pt.getProperty("Method");
System.out.println(className);
System.out.println(method);
// 利用反射 调用方法
Class<?> c = Class.forName(className);
Method method2 = c.getDeclaredMethod(method);
// 开启权限
method2.setAccessible(true);
// 调用方法
// 快速创建对象
Object obj = c.newInstance();
method2.invoke(obj);
fis.close();
}
}