2011-11-11 41 views
0

使用javax.tools.JavaCompilerjavax.tools.ToolProvider,我用一個預定義的類封裝了一個用戶輸入的字符串(應該是一個方法),它們都在一個大字符串中並在我的代碼中執行。是否有一種方法(在相同的代碼中)實例化已編譯的類(因爲它在運行時才存在)才能用預定義的一組情況來測試所述函數?java執行之間的Java字符IO

示例:提示用戶編寫一個方法,該方法返回發送給它的相反布爾值作爲參數。

所述方法中的用戶類型。

我換一個泛型類各地的方法,並使用一組預定義的測試案例(真,假),以檢查它的功能(應該得到假的,真背)

+0

Class.forName? – r0ast3d

+0

@ r0ast3d:如果將類存儲在當前類的類加載器將查找此類的地方,則Class.forName僅有幫助。 –

回答

1

也許,通過讀取生成的類成byte[]並使用Classloader.defineClass(..)來解析/構造一個Class對象。爲了正確解析這個類,這個類引用的所有資源都應該可用於您正在使用的類加載器實例。一旦擁有一個Class對象,就可以實例化它並使用reflection調用該方法。