You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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会按名称自动映射属性值
  • 数据类型需要对应:Pythonstr对应KotlinString、Pythonint对应KotlinInt/Long、Pythonlist对应KotlinList
  • 如果属性存在为空的可能,需要在Kotlin侧声明为可空类型(加?后缀),避免空指针转换异常

内容的提问来源于stack exchange,提问作者I don't feel so good

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:36:02