有没有办法使用 Jpype 对接口进行类型转换?
Posted
技术标签:
【中文标题】有没有办法使用 Jpype 对接口进行类型转换?【英文标题】:Is there a way to typecast interface using Jpype? 【发布时间】:2021-05-24 12:12:01 【问题描述】:我正在尝试使用 Jpype 从 Python 调用 Java 代码,并尝试使用 JProxy 实现接口以进行回调。 如果我尝试强制转换,则会出现“TypeError:无法创建 Java 接口实例”的错误 例如
proxy = jpype.JProxy("PutCallback", dict=d, convert=False)
javaPackage.TestClient.put(jLang.String("Pi"), 3, expiryType, jLang.String(" "), amazon.proxy)
但是如果我直接传递它会给出错误,因为我的方法在传递时没有找到方法,所以我传递的是 jproxy 对象
proxy = jpype.JProxy("PutResultCallback", dict=d, convert=False)
javaPackage.TestClient.put(jLang.String("Pi"), 3, expiryType, jLang.String(" "), proxy)```
javaPackage.TestClient.put("Pi", 3, expiryType, " ", proxy)
TypeError: No matching overloads found for
TestClient.put(java.lang.String,int,client.Dat
aExpiryType,java.lang.String,_jpype._JProxy), options are:
public void TestClient.put(java.lang.String,boolean,client.DataExpiryType,java.la
ng.String,client.PutResultCallback)```
【问题讨论】:
【参考方案1】:这将通过从 Dev 包中删除静态引用来实现,它会自动捕获代理对象。
无需将其类型转换为接口。
注意:如果你的方法是静态的,那么你需要通过静态引用来调用它。
【讨论】:
以上是关于有没有办法使用 Jpype 对接口进行类型转换?的主要内容,如果未能解决你的问题,请参考以下文章
通过 JPype 和 numpy 将 Java 类型转换为 Python