Java反射之靜態(tài)加載和動態(tài)加載的簡單實例
更新時間:2016年10月02日 10:20:24 投稿:jingxian
下面小編就為大家?guī)硪黄狫ava反射之靜態(tài)加載和動態(tài)加載的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
靜態(tài)加載:
package com.imooc.加載類; public class Office_Static { public static void main(String[] args) { //new 創(chuàng)建對象,是靜態(tài)加載類,在編譯時刻就需要加載所有的可能使用到的類 if("Word".equals(args[0])){ Word w = new Word(); w.start(); } if("Excel".equals(args[0])){ Excel e = new Excel(); e.start(); } } }
這個程序編譯時必須有Word和Excel這兩個類存在才行,即使判斷后用不到Excel也要加載
動態(tài)加載:
1、接口OfficeAble :
package com.imooc.加載類; public interface OfficeAble { public void start(); }
2、Word實現(xiàn)接口:
package com.imooc.加載類; public class Word implements OfficeAble{ public void start(){ System.out.println("word start"); } }
3、Excel實現(xiàn)接口:
package com.imooc.加載類; public class Excel implements OfficeAble{ public void start(){ System.out.println("excel start"); } }
4、Main方法
package com.imooc.加載類; public class OfficeBetter { /** * @param args */ public static void main(String[] args) { try { //動態(tài)加載類,在運行時刻加載 Class c = Class.forName(args[0]);//在運行配置里面輸入com.imooc.加載類.Excel //通過類類型,創(chuàng)建該類對象(先轉(zhuǎn)換為Word和Excel的共同接口OfficeAble) OfficeAble oa = (OfficeAble)c.newInstance(); oa.start(); //不推薦下面兩種,因為不確定是加載Word還是Excel,要強轉(zhuǎn) // Word word = (Word)c.newInstance(); // word.start(); // Excel excel = (Excel)c.newInstance(); // excel.start(); } catch (Exception e) { e.printStackTrace(); } } }
以上就是小編為大家?guī)淼腏ava反射之靜態(tài)加載和動態(tài)加載的簡單實例的全部內(nèi)容了,希望對大家有所幫助,多多支持腳本之家~
相關(guān)文章
jvm細節(jié)探索之synchronized及實現(xiàn)問題分析
這篇文章主要介紹了jvm細節(jié)探索之synchronized及實現(xiàn)問題分析,涉及synchronized的字節(jié)碼表示,JVM中鎖的優(yōu)化,對象頭的介紹等相關(guān)內(nèi)容,具有一定借鑒價值,需要的朋友可以參考下。2017-11-11Java創(chuàng)建數(shù)組的3種方式代碼舉例
數(shù)組是相同類型數(shù)據(jù)的有序集合,數(shù)組描述的是若干個相同類型的數(shù)據(jù)按照一定的先后次序排列組合而成,其中每一個數(shù)據(jù)稱為數(shù)組的元素,可以通過下標進行訪問,這篇文章主要給大家介紹了關(guān)于Java創(chuàng)建數(shù)組的3種方式,需要的朋友可以參考下2024-01-01詳解在SpringBoot中使用MongoDb做單元測試的代碼
這篇文章主要介紹了詳解在SpringBoot中使用MongoDb做單元測試的代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11