反射类相关理解练习
1.定义接口
public interface Action {
?public void execute();
?
}
2.实现接口的类Test
public class Test implements Action{
?public Test(){
??System.out.println("test被实例化");
?}
?@Override
?public void execute() {
??System.out.println("方法被执行!");?
?}
}
3.工厂类FactoryBean
import java.io.FileInputStream;
import java.util.Properties;
public class BeanFactory {
?//properties是map的子类
?private Properties pros = new Properties();
?public BeanFactory(String fileName) {
??//通过路径fileName扫描资源文件
??FileInputStream fis;
??try {
???fis = new FileInputStream(fileName);
???pros.load(fis);
??} catch (Exception e) {
???e.printStackTrace();
??}
?}
?public Object getBean(String beanName) {
??String className = pros.getProperty(beanName);
??Object obj = null;
??//Class实例用于到文件扫描,将信息装载到该实例中
??Class clazz;
??try {
???//找到并返回一个类存储在类型为Class的类里
?clazz = Class.forName(className);//查找到资源文的"com.wjj.action.LoginAction"进行加载
???obj = clazz.newInstance();//在这里实例化该类"com.wjj.action.LoginAction"
??} catch (Exception e) {
???e.printStackTrace();
??}
??return obj;
?}?
?public static void main(String[] args) {
??BeanFactory fb = new BeanFactory("E://test.xml");
??Action action = (Action)fb.getBean("test");
??action.execute();
?}
}
其中在test.xml
test=com.wjj.test.Test
4.结果
test被实例化
方法被执行
?