這個也沒有解決說如果excel沒有這個類還能運行啊
public?class?test?{ public?static?void?main(String[]?args)?{ //?TODO?Auto-generated?method?stub ???????? if("word".equals(args[0])){ Class?c; try?{ c?=?Class.forName(args[0]); word?w=(word)c.newInstance(); w.start(); }?catch?(ClassNotFoundException?e)?{ //?TODO?Auto-generated?catch?block e.printStackTrace(); }?catch?(InstantiationException?e)?{ //?TODO?Auto-generated?catch?block e.printStackTrace(); }?catch?(IllegalAccessException?e)?{ //?TODO?Auto-generated?catch?block e.printStackTrace(); } } if("excel".equals(args[0])){ Class?c; try?{ c?=?Class.forName(args[0]); excel?e=(excel)c.newInstance(); e.start(); }?catch?(ClassNotFoundException?e)?{ //?TODO?Auto-generated?catch?block e.printStackTrace(); }?catch?(InstantiationException?e)?{ //?TODO?Auto-generated?catch?block e.printStackTrace(); }?catch?(IllegalAccessException?e)?{ //?TODO?Auto-generated?catch?block e.printStackTrace(); } } ???????? } }
如果我沒有excel的類,在編譯時還是會報錯,并不能實現這個功能,
難道說只能用接口,那樣只能體現接口的作用
2016-08-05
之所以會報錯是因為這里使用的是靜態加載,在目錄下沒有寫excel的類當然會報錯了
老師講的意思是如何在Excel類有問題的情況下使用沒有問題的Word類的方法,首先就是要通過編譯才能使用
如何在Excel類有問題的情況下通過編譯呢,就是使用動態加載了,也就是說當某個類在要使用的時候才進行相關的編譯與加載,不使用的話就不加載,這樣這個程序作為整體來說就可以運行沒有問題的Word類和方法,只有運行到錯誤的Excel類的方法的時候,程序才會提示錯誤。
所以這個問題的關鍵核心在于:
如何在一個可能存在錯誤類的情況下盡可能使用沒有存在錯誤的類,而不是如何解決錯誤的類。
2016-08-05
編譯時還是會報錯是因為編譯器監測了此處使用excel的語法錯誤(未定義excel類)