国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java反射機制總結學習--動態加載類

2019-11-06 06:49:56
字體:
來源:轉載
供稿:網友

首先有如下代碼:

public class DynamicLoadClass { public static void main(String[] args) { if("A".equals(args[0])){ A a = new A(); a.PRint(); }else if("B".equals(args[0])){ B b = new B(); b.print(); } }}class A{ void print(){ System.out.println("A"); }}class B{ void print(){ System.out.println("A"); }}

上面代碼可以正常編譯、運行。但是如果此時沒有B類,而且,我們的需求也不需要B類,就只用A類的方法就可以了,這個時候我們就需要main函數的代碼,然后重新編譯運行。另一種情況,我們又添加了一個C類,我們又要繼續添加else if。。。試想,如果有100個類,我們就要寫100個if else,這絕對不是一種合理的方法。 接下來,就介紹動態加載類的方法:

public class DynamicLoadClass { public static void main(String[] args) { try { //動態加載類 Class c = Class.forName("com.wj.demo.dynamicLoadClass.B");//這個地方可以根據需要寫上相應的類,避免了寫很多個if else的情況。 MyInterface myClass = (MyInterface) c.newInstance();//使用類的類類型創建類的實例,并且上轉型 myClass.start();//這個地方,將調用B類的start方法. } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalaccessException e) { e.printStackTrace(); } }}public interface MyInterface { void start();}public class A implements MyInterface{ @Override public void start() { System.out.println("A"); }}public class B implements MyInterface { @Override public void start() { System.out.println("B"); }}

以上就是動態加載類的方法。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沂南县| 临洮县| 灵石县| 封开县| 集安市| 突泉县| 庐江县| 惠安县| 章丘市| 新绛县| 公主岭市| 吉木萨尔县| 东乡族自治县| 安泽县| 上蔡县| 尼玛县| 阿城市| 伊金霍洛旗| 重庆市| 临沭县| 阿合奇县| 南宁市| 友谊县| 漯河市| 武功县| 图们市| 商洛市| 香港 | 喀什市| 新疆| 南江县| 平谷区| 上林县| 休宁县| 湖州市| 安福县| 游戏| 洛阳市| 新丰县| 河东区| 新乐市|