这个 kotlin 具体化类型的用例有用吗

Is this usecase of kotlin reified type useful

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

但是有一些使用具体化类型参数创建扩展函数的示例,这些参数只是将 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

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

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