Вызов статических полей в py4j - PullRequest
0 голосов
/ 28 марта 2019

У меня есть этот код, который работает:

from py4j.java_gateway import JavaGateway
from py4j.java_gateway import java_import 
gateway = JavaGateway()

java_import(gateway.jvm,'MyPackage.*')

myVar = gateway.jvm.MyClass()
myVar.myMethod(gateway.jvm.MyPackage.Constant.ConstantClass.MyField)

, где MyField - это статическое поле из ConstantClass.

Я хочу избежать вызоваполе с полным именем и импортируем MyPackage.Constant отдельно в jvm.

Итак, я написал этот код, но он не работает:

from py4j.java_gateway import JavaGateway
from py4j.java_gateway import java_import 
gateway = JavaGateway()

java_import(gateway.jvm,'MyPackage.*')
java_import(gateway.jvm,'MyPackage.Constant.*')

myVar = gateway.jvm.MyClass()
myVar.myMethod(gateway.jvm.ConstantClass.MyField)//the line with error

со следующей ошибкой:

TypeError («Объект« JavaPackage »не вызывается»,)

Может кто-нибудь объяснить мне механизм вызова статических полей и почему он не работает?

...