2011-01-07 80 views
2

我有以下的Java代碼:JRuby和泛型

nameFinderModel = NameFinderME.train("en", "organization", 
     sampleStream, Collections.<String, Object>emptyMap()); 

我的換算如下:

nameFinderModel = NameFinderME.train("en", "organization", sample_stream, {}) 

這是一個足夠的轉換還是我失去了一些東西?是否有將泛型轉換爲JRuby的一般準則?

回答

2

這是一個正確的轉換。請記住,Java在編譯時會刪除泛型。引用the documentation

如果Java類是使用Java泛型定義的,則在編譯期間爲了向後兼容而刪除類型。結果是。 JRuby在自動類型轉換方面會遇到問題。例如,如果您有一個Map<String,String>,它將被視爲一個簡單的Map,JRuby將無法使用反射來確定正確的類型。