Java 反射实例

第一步:编写两个简单的业务类

Service1.java

package com.xuzhiwen.service;

public class Service1 {
    public void doService1(){
        System.out.println("业务方法一");
    }
}

Service2.java

package com.xuzhiwen.service;

public class Service2 {
    public void doService2(){
        System.out.println("业务方法二");
    }
}

 

第二步:新增配置文件

spring.txt

class=com.xuzhiwen.service.Service2
method=doService2

 

第三步:编写测试类

TestService.java

package com.xuzhiwen.service;

import java.io.File;
import java.io.FileInputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Properties;

public class TestService {
    public static void main(String[] args) throws Exception {
        String temp = new File("src/com/xuzhiwen/service/spring.txt").getAbsolutePath();
        System.out.println(temp);
        File file = new File(temp);
        Properties pro = new Properties();
        pro.load(new FileInputStream(file));
        //获取配置文件类名
        String className = pro.getProperty("class");
        //获取配置文件方法名
        String methodName = pro.getProperty("method");
        System.out.println(className);
        System.out.println(methodName);
        
        //根据类全名获取类的对象
        Class<?> cc = Class.forName(className);
        //根据方法名获取方法对象
        Method mm = cc.getMethod(methodName);
        //获取构造器
        Constructor<?> contor = cc.getConstructor();
        //根据构造器实例化对象
        Object obj = contor.newInstance();
        mm.invoke(obj);
    }
}

第四步:运行程序,结果如下

 第五步: 文件结构树

 

posted @ 2017-08-17 15:35  beibidewomen  阅读(198)  评论(0编辑  收藏  举报