2009-02-14 99 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