2012-09-18 71 views
1

兩個類加載器CL1和CL2加載兩個不同的類C1和C2。 我想從C1中調用C2中的方法。這是否可以通過反思?類加載器問題

我得到了一個提示,說使用boot strap class loader加載的helper類可以解決這個問題,因爲這兩個類都可以訪問boot strap class loader。但不知道如何?

有人能指導我嗎?

+0

你想調用靜態或實例方法嗎?如果是實例方法,那麼你將如何聲明包含C2實例的變量? 'C2 obj'?在這兩種情況下,C1的文本中都沒有C2,C1無法編譯。如果它以某種方式編譯,那麼你有另一個C2加載CL1。無論如何,向我們展示文本並告訴錯誤發生的地點和位置。 –

+0

目前我正在從classloader CL2中加載我的類C1。我想介紹這一步。我正在通過反射來完成這項工作,CL2中的CL2.loadClass(C2),因爲我的類也由CL2加載。 –

回答

2

類由兩個不同的類加載器加載的事實不會阻止調用。你不需要反思(但你可以,如果你願意)。

1

輔助類必須是通用的父類加載器(特別是引導類加載器)加載的公共超類或超接口。如果沒有這樣的助手類,那麼你必須使用反射。

+0

你可以引用以上場景的代碼片段嗎? –

+0

更正:只有C2必須實現由公共父​​類加載器加載的接口。然後就像我一樣訪問C2。 –