Java利用反射實現框架類的方法例項
阿新 • • 發佈:2020-10-20
框架類的簡單實現
實現步驟:
1. 載入配置檔案
2. 獲取配置檔案中定義的資料
3. 載入該類進記憶體
主要講解第一步:載入配置檔案 的相關知識。
//1.載入配置檔案 //1.1建立Properties物件 Properties pro = new Properties(); //1.2載入配置檔案,轉換為一個集合 //1.2.1獲取class目錄下的配置檔案 ClassLoader classLoader = ReflectTest.class.getClassLoader(); InputStream is = classLoader.getResourceAsStream("pro.properties"); pro.load(is);
Properties 是map介面的實現類,它有一個特有的功能:可以儲存到流中或者從流中載入。本例中用到它的方法有:
String getProperty(String key) //使用此屬性列表中指定的鍵搜尋屬性
void load(Reader reader) // 從輸入字元流讀取屬性列表(鍵和 元素對)
Java是面嚮物件語言,面向物件的語言的宗旨就是萬事萬物皆物件,那麼類也是一個物件,類裡面的屬性和方法也是物件。java裡面的所有的類都是Class類的物件,這個ReflectTest.class是獲得這個類相對於Class類的物件。
getclassLoader是Class類下的方法,用於返回類載入器
getResourceAsStream 是ClassLoader類下的方法。可以返回輸入流。
Class.getResourceAsStream(String path) : path 不以'/'開頭時預設是從此類所在的包下取資源,以'/'開頭則是從ClassPath根下獲取。其只是通過path構造一個絕對路徑,最終還是由ClassLoader獲取資源。
以下是完整程式:
public class ReflectTest { public static void main(String[] args) throws Exception { //可以建立任意類的物件,可以執行任意方法 /* 前提:不能改變該類的任何程式碼。可以建立任意類的物件,可以執行任意方法 */ /* Person p = new Person(); p.eat();*/ /* Student stu = new Student(); stu.sleep();*/ //1.載入配置檔案 //1.1建立Properties物件 Properties pro = new Properties(); //1.2載入配置檔案,轉換為一個集合 //1.2.1獲取class目錄下的配置檔案 ClassLoader classLoader = ReflectTest.class.getClassLoader(); InputStream is = classLoader.getResourceAsStream("pro.properties"); pro.load(is); //2.獲取配置檔案中定義的資料 String className = pro.getProperty("className"); String methodName = pro.getProperty("methodName"); //3.載入該類進記憶體 Class cls = Class.forName(className); //4.建立物件 Object obj = cls.newInstance(); //5.獲取方法物件 Method method = cls.getMethod(methodName); //6.執行方法 method.invoke(obj); } }
總結
到此這篇關於Java利用反射實現框架類的文章就介紹到這了,更多相關Java反射實現框架類內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!