摘要:其實這只是一個簡單的小例子,目的是讓大家知道這種思想,這種思想是很重要的,而框架就是基于反射機制,通過修改配置文件來實現需求。
現在有三個類:Student、Teacher、Doctor和一個測試類:Test,先上代碼:
public class Student { public void love() { System.out.println("愛編程,愛Java"); } }
public class Teacher { public void love() { System.out.println("只愛學生"); } }
public class Doctor { public void love() { System.out.println("專治各種不服"); } }
public class Test{ public static void main(String[] args) { Student s=new Student(); s.love(); //Teacher t=new Teacher(); //t.love(); //Doctor d=new Doctor(); //d.love(); } }
如果按照以上的方法,每一次需求變更,這一次是Student類,下一次是Teacher類,再下一次是Doctor類,那豈不是每一次都要改源程序?(其實在實際開發中經常遇到需求變更)那可不可以不改源程序就能應對大量的需求變更呢?答案是可以的,通過Java給我們提供的反射機制,不改源程序,只對配置文件做修改即可。下面附上代碼和配置文件內容:
public class Test { public static void main(String[] args) throws Exception { //Properties類用于讀取配置文件的鍵值對 Properties p=new Properties(); FileReader fr=new FileReader("class.txt"); p.load(fr); //通過鍵獲得值 String className=p.getProperty("className"); String methodName=p.getProperty("methodName"); //創建字節碼文件對象,獲得無參構造方法對象 Class clazz=Class.forName(className); Constructor con=clazz.getConstructor(); //通過構造方法獲得實例對象 Object obj=con.newInstance(); //獲得成員方法對象 Method met=clazz.getDeclaredMethod(methodName); //調用方法 met.invoke(obj); } }
className=com.ls.reflect.Doctor//注意,這里是 包名.類名 methodName=love 注釋已經很詳細了,以后只需改配置文件就行了。 其實這只是一個簡單的小例子,目的是讓大家知道這種思想,這種思想是很重要的, 而Spring框架就是基于反射機制,通過修改配置文件來實現需求。 所以學好反射能更加清楚地了解Spring框架。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66258.html
摘要:本文是作者自己對中線程的狀態線程間協作相關使用的理解與總結,不對之處,望指出,共勉。當中的的數目而不是已占用的位置數大于集合番一文通版集合番一文通版垃圾回收機制講得很透徹,深入淺出。 一小時搞明白自定義注解 Annotation(注解)就是 Java 提供了一種元程序中的元素關聯任何信息和著任何元數據(metadata)的途徑和方法。Annotion(注解) 是一個接口,程序可以通過...
摘要:以實現自己熟悉的東西為導向比如我們做后端開發,首先是常用的循環迭代條件判斷增刪改成。它是由實現的,不保證元素的順序,也就是說所說元素插入的順序與輸出的順序不一致。 下面是我直播的文字版,直播地址:https://segmentfault.com/l/15...代碼:https://github.com/zhoumengka...整個項目我們我又細分了6個版本來演進,希望更加便于大家對比...
摘要:以實現自己熟悉的東西為導向比如我們做后端開發,首先是常用的循環迭代條件判斷增刪改成。它是由實現的,不保證元素的順序,也就是說所說元素插入的順序與輸出的順序不一致。 下面是我直播的文字版,直播地址:https://segmentfault.com/l/15...代碼:https://github.com/zhoumengka...整個項目我們我又細分了6個版本來演進,希望更加便于大家對比...
摘要:從使用到原理學習線程池關于線程池的使用,及原理分析分析角度新穎面向切面編程的基本用法基于注解的實現在軟件開發中,分散于應用中多出的功能被稱為橫切關注點如事務安全緩存等。 Java 程序媛手把手教你設計模式中的撩妹神技 -- 上篇 遇一人白首,擇一城終老,是多么美好的人生境界,她和他歷經風雨慢慢變老,回首走過的點點滴滴,依然清楚的記得當初愛情萌芽的模樣…… Java 進階面試問題列表 -...
閱讀 1525·2023-04-25 17:41
閱讀 3045·2021-11-22 15:08
閱讀 846·2021-09-29 09:35
閱讀 1610·2021-09-27 13:35
閱讀 3327·2021-08-31 09:44
閱讀 2720·2019-08-30 13:20
閱讀 1943·2019-08-30 13:00
閱讀 2563·2019-08-26 12:12