У меня есть этот код, который работает:
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 »не вызывается»,)
Может кто-нибудь объяснить мне механизм вызова статических полей и почему он не работает?