Chaquopy如何将Python返回的自定义对象转换为Kotlin类
你遇到的编译错误本质是Kotlin无法自动推断toJava方法的泛型参数类型,可按以下步骤实现正确转换:
步骤1:定义匹配的Kotlin数据类
首先在Kotlin侧定义与Python Card类属性名、类型完全一致的类,推荐使用数据类简化实现:
// 属性名必须和Python Card类的属性完全一致,大小写也需匹配 data class Card( val name: String, val costs: Int )
步骤2:调用toJava完成转换
有两种写法可以解决泛型推断错误,二选一即可:
- 写法1:显式指定泛型参数
val pyObject = pythonFile.callAttr("returnObj", "string") // 主动声明要转换的目标类型 val card = pyObject.toJava<Card>(Card::class.java)
- 写法2:提前声明变量类型让Kotlin自动推断
val pyObject = pythonFile.callAttr("returnObj", "string") // 明确变量类型后Kotlin可自动推断泛型参数 val card: Card = pyObject.toJava(Card::class.java)
转换完成后可直接访问card.name、card.costs属性使用。
注意事项
- 两侧类的属性名必须完全匹配、大小写敏感,Chaquopy会按名称自动映射属性值
- 数据类型需要对应:Python
str对应KotlinString、Pythonint对应KotlinInt/Long、Pythonlist对应KotlinList - 如果属性存在为空的可能,需要在Kotlin侧声明为可空类型(加
?后缀),避免空指针转换异常
内容的提问来源于stack exchange,提问作者I don't feel so good
相关产品推荐
相关产品推荐

