2009-02-14 107 views
3

我正在使用JRuby中的Java庫。我從文件中讀取的對象,並且我需要它傳遞作爲不同對象類型的第二構造函數:從JRuby投射Java對象

@hmm_model = ObjectInputStream.new(FileInputStream.new(LINGPIPE_MODEL_PATH)) 
@tagger = HmmDecoder.new(@hmm_model) 

@hmm_model是類型ObjectInputStream的的,並且需要被轉換爲(HiddenMarkovModel)。顯然,這會很容易在Java中,這純粹是:

@tagger = HmmDecoder.new((HiddenMarkovModel)@hmm_model) 

但是,當然,這並不JRuby中工作。實際上是否有任何方法明確地將@hmm_model轉換爲正確的類型?

回答

2

所以,我不是很聰明。 JRuby JVM界面足夠聰明,可以自己投射,我正在錯誤地調用構造函數。實際的調用是:

@tagger = HmmDecoder.new(@hmm_model.readObject()) 

和JRuby正確處理到HiddenMarkovModel的類型轉換。

JRuby:1 me:0