【问题标题】:Is this usecase of kotlin reified type useful这个 kotlin reified 类型的用例有用吗
【发布时间】:2018-09-06 17:53:59
【问题描述】:

Reified Type 参数支持运行时访问传递给函数的类型。我知道这在某些情况下可能很有用,可以避免反射。

但也有使用具体类型参数创建扩展函数的示例,它们只是将 T::class.java 语法包装在如下方法中。

  inline fun <reified T > Context.systemService() =
      ContextCompat.getSystemService(this,T::class.java)

kotlin 参考中提到以下用法调用站点并不漂亮。为什么不鼓励以下用法?

  ContextCompat.getSystemService(this, NotificationManager::class.java)

我们现在可以这样写:

  systemService<NotificationManager>()

在这种情况下,除了代码看起来更干净之外,还有其他好处吗?

注意:示例来自I/O' 18

【问题讨论】:

  • 他们都做同样的事情,不管你叫什么

标签: android kotlin kotlin-android-extensions kotlin-extension


【解决方案1】:

这完全取决于个人意见,因为这两个函数会做同样的事情。

人们会倾向于认为具体化的 Kotlin 扩展方法更惯用,因为它利用高级语言特性来提供比您必须使用的更简单的语法。并不意味着您绝对必须使用它 - 自己决定是否喜欢它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多