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
答案 0 :(得分:2)
这完全取决于个人的意见,因为两个功能都将执行相同的操作。
人们将倾向于认为改良的Kotlin扩展方法更惯用,因为它利用高级语言功能提供比您原本必须使用的语法更简单的语法。并不意味着您绝对必须使用它-决定是否自己喜欢它。