1

我有一个方法,它需要:“java.io.Reader”作为参数 java.io.Reader 是一个接口,不能被实例化。

所以,我使用这样的一个子类: StringReader= jp.java.io.StringReader("teststring")

如何将 StringReader 转换为 java.io.Reader 类型?

因为该方法不能隐式执行。

编辑:我在使用该方法时收到此错误消息:

   txt= u'gfdgfdgddf'
   StringReader = jp.JClass('java.io.StringReader')(txt)
   StringReader.ready()  #Ok works
   userDicC= jp.JClass('org.apache.lucene.analysis.ja.dict.UserDictionary')
   useDic= userDicC(StringReader)

方法详情:public static UserDictionary open(Reader reader) throws IOException

我收到了这个错误:

userDicC= java.jp.JClass('org.apache.lucene.analysis.ja.dict.UserDictionary') useDic= userDicC(StringReader)

    line 84, in _javaInit
    self.__javaobject__ = self.__class__.__javaclass__.newClassInstance(*args)

   RuntimeError: No matching overloads found. at  src\native\common\jp_method.cpp:121
4

1 回答 1

1

从评论中可以看出,这个问题根本与投射对象无关。

要调用该方法public static UserDictionary open(Reader reader),您需要替换该行

useDic= userDicC(StringReader)

useDic= userDicC.open(StringReader)

前一行将不起作用,因为在 Lucene-Kuromoji 版本 5.5.0 中,UserDictionary该类声明没有公共构造函数。(该类确实有一个带有List<String[]>参数的私有构造函数,并且静态open方法调用它。)

令人困惑的是,这个类的旧版本,例如 Lucene-Kuromoji 的 5.0.0 版本,确实声明了一个带有单个Reader参数的构造函数。我希望您的代码可以与该版本的 Lucene-Kuromoji 一起使用。

于 2016-03-27T14:41:54.390 回答