在py4j中调用静态字段

2024-09-30 14:37:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个有效的代码:

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' object is not callable",)

有人能解释一下调用静态字段背后的机制吗?为什么不起作用


Tags: 代码fromimportmyclassjvmjavagatewayconstant