这个 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 扩展方法更加惯用,因为它利用高级语言功能来提供比您必须使用的语法更简单的语法。并不意味着您绝对必须使用它 - 决定您是否喜欢它。
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 扩展方法更加惯用,因为它利用高级语言功能来提供比您必须使用的语法更简单的语法。并不意味着您绝对必须使用它 - 决定您是否喜欢它。