反射-通過反射執行配置檔案內容

ZHOU_VIP發表於2017-06-11

package cn.itcast.test;

public class Student {
	public void love() {
		System.out.println("愛生活,愛Java");
	}
}


package cn.itcast.test;

public class Teacher {
	public void love() {
		System.out.println("愛生活,愛青霞");
	}
}


package cn.itcast.test;

import java.io.FileReader;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Properties;

/*
 * 通過配置檔案執行類中的方法
 * 
 * 反射:
 * 		一般需要有配置檔案配合使用。
 * 		用class.txt代替。
 * 		並且你知道有兩個鍵。
 * 			className=cn.itcast.test.Student
 *          methodName=love
 * 			
 */
public class Test {
	public static void main(String[] args) throws Exception {
		// 反射前的做法
		// Student s = new Student();
		// s.love();
		// Teacher t = new Teacher();
		// t.love();
		// 反射後的做法

		// 載入鍵值對資料
		Properties prop = new Properties();
		FileReader fr = new FileReader("class.txt");
		prop.load(fr);
		fr.close();

		// 獲取資料
		String className = prop.getProperty("className");
		String methodName = prop.getProperty("methodName");

		// 反射
		//得到位元組碼檔案物件
		Class c = Class.forName(className);
		
        //獲取構造器物件
		Constructor con = c.getConstructor();
		Object obj = con.newInstance();

		// 呼叫方法
		Method m = c.getMethod(methodName);
		m.invoke(obj);
	}
}


相關文章