這是發佈的問題的延續:How to load a jar file at runtime在運行時如何從外部jar訪問方法?
我不確定如何繼續調用方法級別。根據我的理解,來自clazz對象的 ,我將使用getMethod或getDeclaredMethod來獲取我將調用調用的Method對象。當然,invoke需要一個實例。那麼在示例代碼中,這就是所謂的doRun?
即使我想執行與main不同的方法(假設它是使用運行調用調用的doRun對象的主要方法),是否需要執行doRun.run()方法調用?
只是爲了更詳細地解釋原文,請問: DoRun.run()是否會啓動一個執行類型爲clazz的類對象實例的新線程?
感謝您幫我解決這個問題。我看過「在運行時應該如何加載jar動態」(對不起,只允許一個超鏈接),但是這看起來在第一篇文章中違反了Class.newInstance的惡意箴言I引用。
因此,如果我理解了您的註釋,然後使用接口,我知道有什麼方法可用,並且可以在適當地投射實例對象之後直接編寫調用方法的代碼。這是真的? – Todd 2009-08-24 15:01:04
當然,這假定原始代碼已經使用接口進行了編譯,而不是稍後創建的代碼並嘗試將實例轉換爲該實例。 – Todd 2009-08-24 15:35:11
@Todd - 是的,你已經明白了。接口(或其他強類型實現)方法通常用於代碼已被寫入以動態實例化的插件。如果你正在對任意類進行自省和調用,這不是一個選項。 – McDowell 2009-08-24 15:47:06