Kotlin - 我可以使用扩展进行方法重载吗?

时间:2018-01-17 07:28:07

标签: android kotlin

我在android中创建了一个自定义视图。其中一种方法有这样的签名:

fun show(CategoryFilterModel model) {/*...*/}

它工作正常。现在我想创建一个重载函数,如果我通过将它添加到自定义视图类中来实现它:

fun show(ShopFilterModel model) {/*...*/}

请注意,类型不同,因此这是方法重载。

我想到了一个想法,我可以在kotlin中使用扩展来为类添加另一种方法。

所以想要这样的东西:

fun MyCustomView.show(ShopFilterModel: model){

    }

这是建议还是我应该只添加带扩展的实用程序方法?是否有任何管理费用?

1 个答案:

答案 0 :(得分:4)

这不仅适用于实用程序,因为您可以阅读这篇很棒的answer,其中列出了几乎所有用例。

Imho,如果您想要使用方法扩展该类,那么将该方法直接添加到该方法没有问题,而不是使用扩展方法。然而,从技术上讲,你可以考虑这样做。请注意 calling such an extension function from Java不是非常惯用,因为它会被编译为static函数。如果它将从Java调用,我宁愿在可能的情况下使用普通方法。