/ / Javaメソッドを呼び出すためのキーワードパラメータ渡しによるJython-java、python、class、jython

Jython by Keyword - Javaメソッドを呼び出すためのパラメータ渡し - java、python、class、jython

このJavaクラスがあります。

public class sample {
public Integer foo(Integer x){
return x+5;
}
}

そしてJythonで電話したい .foo 「keyword-parameter」を引数に渡します。私は次のPythonコードになりました、

java_file = sample()
kwargs = {"x":3}
print java_file.foo(**kwargs)

しかし、これはエラーになります。

print java_file.foo(**kwargs)
TypeError: foo(): takes no keyword arguments

これを行う方法はありますか?ありがとう

回答:

回答№1は0

これから Jython FAQ

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は、これら2つの配列のマッピングを処理します。 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;
}
}