我有一个方法需要:" 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(读者阅读器) 抛出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
答案 0 :(得分:0)
根据评论,结果表明问题与投射对象无关。
要调用方法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的那个版本。