py4j.java_gateway
— Py4J Main API¶The py4j.java_gateway
module defines most of the classes that are needed
to use Py4J. Py4J users are expected to only use explicitly JavaGateway
and optionally, GatewayParameters
, CallbackServerParameters
, java_import
, get_field
, get_method
, launch_gateway
, and is_instance_of
. The other module members are documented to
support the extension of Py4J.
Using the jvm
property:
>>> gateway = JavaGateway()
>>> jvm = gateway.jvm
>>> l = jvm.java.util.ArrayList()
>>> l.append(10)
>>> l.append(1)
>>> jvm.java.util.Collections.sort(l)
>>> l
[1, 10]
>>> l.append(5)
>>> l.sort()
>>> l
[1, 5, 10]
Using auto_field
:
First we declare a class that has a field AND a method called member:
package py4j.examples;
public class ExampleWithField {
public int member = 1;
public String member() {
return "Hello World";
}
}
Then we play with the class using the two possible values of auto_field:
>>> java_gateway = JavaGateway() # auto_field = False
>>> example = java_gateway.jvm.py4j.examples.ExampleWithField()
>>> example.member()
u'Hello World'
>>> get_field(example,'member')
1
>>> java_gateway2 = JavaGateway(GatewayParameters(auto_field=True))
>>> example2 = java_gateway2.jvm.py4j.examples.ExampleWithField()
>>> example2.member
1
>>> get_method(example2,'member')()
u'Hello World'
Represents a Java object from which you can call methods or access fields.
Represents a member (i.e., method) of a JavaObject
. For now, only
methods are supported. Fields are retrieved directly and are not contained in a
JavaMember.
A JavaClass represents a Java Class from which static members can be retrieved. JavaClass instances are also needed to initialize an array.
Usually, JavaClass are not initialized using their constructor, but they are created while accessing the jvm property of a gateway, e.g., gateway.jvm.java.lang.String.
The following functions get be used to import packages or to get a particular field or method when fields and methods in a Java class have the same name: