/ / Jython przez przekazanie parametru-słowa kluczowego w celu wywołania metod Java - java, python, class, jython

Jython według słów kluczowych - przekazywanie parametrów w celu wywołania metod Java - java, python, class, jython

Mam tę klasę Java,

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

A z Jythonem chcę zadzwonić .foo podczas przekazywania „parametru-słowa kluczowego” do argumentu. Skończyło się na następującym kodzie Pythona,

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

Ale to powoduje błąd,

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

Czy jest na to sposób? Dzięki

Odpowiedzi:

0 dla odpowiedzi № 1

Od tego Jython FAQ:

5.3 Obsługa * args i ** kw w metodach Java

W Jythonie możesz obsługiwać argumenty słów kluczowych w metodach Java, definiując metodę taką jak ta (parametry są ważnym punktem):

public PyObject foo(PyObject[] args, String[] keywords);

Tablica słów kluczowych zawiera wszystkie słowa kluczowe dla argumentów zdefiniowanych przez słowa kluczowe. Na przykład, jeśli zadzwoniłeś do foo z:

foo(1,2,3,four=4,five=5)

argumenty to: [1, 2, 3, 4, 5], a słowa kluczowe: ["cztery", "pięć"] (tablica składająca się z 2 elementów).

Dodatkowo możesz skorzystać z eksperymentalnegoparser argumentów org.python.core.ArgParser, aby zająć się mapowaniem tych dwóch tablic. Więcej informacji na temat org.python.core.ArgParser można znaleźć w Javadocs (lub źródle).

W powyższym przykładzie przykładowa klasa może wyglądać następująco:

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;
}
}