[英]Jython by Keyword-Parameter passing to invoke Java methods
我有這個Java課,
public class sample {
public Integer foo(Integer x){
return x+5;
}
}
而且,通過Jython,我想在將“關鍵字參數”傳遞給參數時調用.foo
。 我最終得到了以下Python代碼,
java_file = sample()
kwargs = {'x':3}
print java_file.foo(**kwargs)
但這會導致錯誤,
print java_file.foo(**kwargs)
TypeError: foo(): takes no keyword arguments
有沒有辦法做到這一點? 謝謝
通過此Jython常見問題解答 :
5.3在Java方法中支持* args和** kw
在Jython中,您可以通過定義如下方法來支持Java方法的關鍵字參數(參數是重點):
public PyObject foo(PyObject[] args, String[] keywords);
關鍵字數組包含關鍵字定義的參數的所有關鍵字。 例如,如果您使用以下命令調用foo:
foo(1,2,3,four=4,five=5)
args為:[1、2、3、4、5],關鍵字為:['four','five'](由2個元素組成的數組。)
此外,您可以使用實驗性參數解析器org.python.core.ArgParser處理映射這兩個數組。 有關org.python.core.ArgParser的更多詳細信息,請查閱Javadocs(或源代碼)。
在上面的示例中,示例類可能如下所示:
public class sample {
public Integer foo(PyObject[] args, String[] keywords) {
ArgParser argParser = new ArgParser("foo", args, keywords, "x");
Integer x = argParser.getInt(0);
return x + 5;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.