Java 反射小案例(使用配置文件)
记录学习过程
定义两个类一个Student 一个Person
还有一个 主类Reflect Test
再加一个配置文件
两类:
public class Student {
public void sleep(){
System.out.println("sleep...");
}
}
public class Person {
public void eat(){
System.out.println("eat...");
}
}
配置文件
ClassName=Reflect.one.Person
methodName=eat
主类
import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.Properties;
//框架类 使用反射的方式
public class ReflectTest {
public static void main(String[] args) throws Exception {
//可以创建任意类的对象,可以执行任意方法
//前提不能改变该类的任何代码,可以创建任意的类对象,可以执行任意方法
// Person p=new Person();
// p.eat();
// Student student=new Student();
// student.sleep();
//创建Properties对象
Properties pro=new Properties();
//加载配置文件
ClassLoader classLoader = ReflectTest.class.getClassLoader();//获取字节码对应类加载到内存,类加载器
InputStream inputStream = classLoader.getResourceAsStream("Reflect/one/pro.properties");
pro.load(inputStream);
//获取配置文件中的数据
String className=pro.getProperty("ClassName");
String methodName=pro.getProperty("methodName");
//加载该类进内存
Class cls = Class.forName(className);
//创建对象
Object obj = cls.newInstance();//创建对象
//获取对象方法
Method method=cls.getMethod(methodName);
method.invoke(obj);
}
}
文件结构:
这样写,主要改配置文件,就可以切换另一个类和实现另一个类的方法。