2010-10-16 47 views
4

我想調用一個自定義集合對象的構造函數。這個自定義對象需要一個Class類型的參數。傳遞類<?>參數使用犀牛

在Java中,這是這樣完成的:

ICollection col = new PersistentCollection(ContentX.class); 

這是我第一次潛入犀牛,我一直無法弄清楚相當如何傳遞這個參數。我發現「類」是一個保留字,因此不可用。

我想,我可以從的Class.forName這樣獲取類:

importPackage(Packages.something.collections); 
importPackage(Packages.something.content4); 
var col = new PersistentCollection(Class.forName(ContentX)); 

,但它只是扔的ClassNotFoundException - 與完全合格的路徑something.content4.ContentX!很顯然,它發現這個班或者它不知道它的路徑。

我做錯了嗎?可悲的是,我現在沒有任何立場去更改Java庫,我需要在沒有新部署的情況下修復數據。

搜索javascript類只會產生DOM/CSS問題。

+0

如何使用Javascript來混進去? – 2010-10-16 12:14:33

+0

QPekka他在JDK 6中使用Rhino(在這裏猜測) - 它與發行版一起打包並且令人驚訝地易於使用 – Pointy 2010-10-16 12:19:43

+1

@Jörgen我只是試過'var c = java.lang.Class.forName(「java.util.HashMap」)'從「jrunscript」,它工作得很好。 – Pointy 2010-10-16 12:21:37

回答

2

我認爲你只是需要做的:

var col = new PersistentCollection(ContentX); 

或者,如果你的類名是一個字符串:

var col = new PersistentCollection(
     java.lang.Class.forName('something.content4.ContentX')); 
+0

哈哈,你確實是這樣的: var col = new PersistentCollection(ContentX); 有時我甚至會驚訝自己..週末我很愚蠢。 – 2010-10-16 13:10:16