Java--反射(框架設計的靈魂)案例
博客說明
文章所涉及的資料來自互聯網整理和個人總結,意在於個人學習和經驗匯總,如有什么地方侵權,請聯系本人刪除,謝謝!
需求
寫一個"框架",不能改變該類的任何代碼的前提下,可以幫我們創建任意類的對象,並且執行其中任意方法
使用
- 配置文件
- 反射
步驟
- 將需要創建的對象的全類名和需要執行的方法定義在配置文件中
- 在程序中加載讀取配置文件
- 使用反射技術來加載類文件進內存
- 創建對象
- 執行方法
配置文件
className=Student
methodName=sleep
代碼
import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.Properties;
/**
* @author tanglei
* @date 2020/6/11 3:10 下午
*/
public class ReflectTest {
public static void main(String[] args) throws Exception {
Student s = new Student();
Properties pro = new Properties();
//獲取配置文件的路徑
ClassLoader classLoader = ReflectTest.class.getClassLoader();
InputStream is = classLoader.getResourceAsStream("pro.properties");
pro.load(is);
String className = pro.getProperty("className");
String methodName = pro.getProperty("methodName");
//加載類進內存
Class cla = Class.forName(className);
Object obj = cla.newInstance();
//加載方法進內存
Method method = cla.getMethod(methodName);
method.invoke(obj);
}
}
感謝
黑馬程序員
以及勤勞的自己
關注公眾號: 歸子莫,獲取更多的資料,還有更長的學習計划