1、首先創建一個抽象父類: 2、創建兩個列印類繼承抽象父類: 3、在創建一個properties配置文件,文件名為pro.properties 4、利用反射和多態調用列印類中的方法 測試得到結果 結論: 利用好java反射和多態機制,可以在不改變代碼的情況下,根據鍵值創建對應的類對象,通過多態方式執 ...
1、首先創建一個抽象父類:
package classes;
public abstract class BasePrint { public abstract void print(); }
2、創建兩個列印類繼承抽象父類:
package classes; public class print1 extends BasePrint{ @Override public void print() { System.out.println("print1方法執行了"); } }
package classes; public class print2 extends BasePrint { @Override public void print() { System.out.println("print2方法執行了"); } }
3、在創建一個properties配置文件,文件名為pro.properties
test1=classes.print1
test2=classes.print2
4、利用反射和多態調用列印類中的方法
package classes; import java.io.FileInputStream; import java.util.Properties; public class TestPrint { public static void main(String[] args) throws Exception { //載入properties配置文件 Properties pro = new Properties(); pro.load(new FileInputStream("src/pro.properties")); //根據傳入的test1鍵值得到類對象,用多態方式父類指向子類,調用子類方法 String className = pro.getProperty("test1"); Class cls = Class.forName(className); BasePrint print = (BasePrint) cls.newInstance(); print.print(); } }
測試得到結果
print1方法執行了
結論:
利用好java反射和多態機制,可以在不改變代碼的情況下,根據鍵值創建對應的類對象,通過多態方式執行不同類中具有相同功能的代碼,當有新的需求時,只需在配置文件中添加對應的全類名即可。
例如:伺服器得到HTTP協議請求,更具不同的請求,執行不同的方法響應給瀏覽器。
自己學習總結,希望也能幫到大家,有錯誤的地方,歡迎指出,一起進步。