簡體   English   中英

Jython通過Keyword-Parameter傳遞來調用Java方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM