kotlin 实现 Java 接口时参数包含Integer时出错

今天开发过程中,同事反馈了一个bug,觉得挺神奇,记录一下。

  1. Java interface ‘ServiceCallBack’
kotlin 实现 Java 接口时参数包含Integer时出错_第1张图片
ServiceCallBack.java
  1. Kotlin ‘RemoteServiceCallback’ 抽象类实现 ‘ServiceCallBack’
kotlin 实现 Java 接口时参数包含Integer时出错_第2张图片
RemoteServiceCallback.kt
  1. 在 Kotlin 代码中使用 ‘RemoteServiceCallback’ 完美
CommentApi.kit
  1. 在 Java 代码中使用 ‘RemoteServiceCallback’ 出现了问题:
kotlin 实现 Java 接口时参数包含Integer时出错_第3张图片
Java中使用异常

在 Java中必须实现 ‘onFailure(Integer result, String resultMsg)’方法,但是在Kotlin中确实正常的,原因可能是Java签名和Kotlin的签名Integer不同导致的, Kotlin中的Integer用int来代替,但是new 一个 Kotlin的抽象类试此时识别错误。

issue在这里:https://discuss.kotlinlang.org/t/java-interface-method-integer-kotlin-implement-it-but-java-new-this-impl-class-fail/5010

你可能感兴趣的:(kotlin 实现 Java 接口时参数包含Integer时出错)