为何Klaxon的JsonObject部分公开方法无法在Kotlin实例中调用?
原因与解决方法
问题原因
这是Kotlin与Java互操作的特性导致的:Kotlin会自动遵循JavaBeans命名规范,将Java类中以get开头的无参getter方法转换为Kotlin风格的属性。比如getKeys()会被映射为keys属性,getSize()映射为size,getMap()映射为map。在Kotlin中,这些getter方法名不会直接暴露,而是需要通过属性访问的方式调用。
解决方法
直接使用Kotlin的属性访问语法替代原始Java方法名:
// 替代getKeys() y.keys // 替代getSize() y.size // 替代getMap() y.map
测试验证:
>>> y.keys res7: java.util.Set<java.lang.String> = [foo, bar, baz] >>> y.size res8: kotlin.Int = 3 >>> y.map res9: java.util.Map<java.lang.String, java.lang.Object> = {foo=1234, bar=null, baz=[11, 22, 33, 44]}
这种方式是Kotlin与Java类交互的标准做法,比直接调用Java方法名更符合Kotlin的语法习惯。
内容的提问来源于stack exchange,提问作者Robert Dodier
相关产品推荐
相关产品推荐

