在Kotlin中覆盖复杂类型的Java方法

时间:2014-10-05 22:10:40

标签: android kotlin

我正在尝试实施JsonHttpResponseHandler#onSuccess。当我使用时:

fun onSuccess(status: Int, headers: Array<Header>?, response: JSONArray?)

我收到意外覆盖错误,但是当我添加override修饰符时,出现onSuccess overrides nothing错误。我做错了什么,或者我在Kotlin编译器中发现了一个错误?

2 个答案:

答案 0 :(得分:3)

尝试使用&#34;覆盖方法&#34; (Mac上为^O),它会建议正确的签名。

我想它是

fun onSuccess(status: Int, headers: Array<out Header>?, response: JSONArray?)

但我不确定。

答案 1 :(得分:1)

在Kolint M9中,您可以更灵活地覆盖有关可空性的Java方法。这是人们最容易出错的事情之一,而不是从Kotlin的角度看Java参数可能是NULL。在M9中,您可以获得您希望Kotlin如何处理Nullability的参数,而不是如何从Java角度实际看到它们。因此,如果您知道参数永远不为null,则可以在没有?的情况下接收它。以前这会导致检查您是否实际覆盖方法并给出错误时不匹配,现在认为它是等效的。