Question

Je travaille avec une bibliothèque Java dans JRuby. Je lis un objet à partir d'un fichier, et je dois le transmettre comme un type d'objet différent à un second constructeur:

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

@hmm_model est de type ObjectInputStream, et doit être jeté à (HiddenMarkovModel). De toute évidence, ce serait facile en Java, il serait juste:

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

Mais, bien sûr, cela ne fonctionne pas dans JRuby. Y at-il vraiment un moyen de jeter explicitement la @hmm_model être du type correct?

Était-ce utile?

La solution

Alors, je ne suis pas très lumineux. L'interface JVM JRuby est assez intelligent pour se jeter, je faisais l'appel au constructeur de manière incorrecte. L'appel réel est:

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

et JRuby gère correctement la conversion de type à un HiddenMarkovModel.

JRuby: 1 moi: 0

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top