Параметры Reified Type поддерживают доступ во время выполнения к типам, передаваемым в функции.Я понимаю, что это может быть полезно в определенных сценариях, чтобы избежать размышлений.
Но есть примеры создания функций расширения с параметрами типа reified, которые просто оборачивают синтаксис T :: class.java в метод, подобный приведенному ниже.
inline fun <reified T > Context.systemService() =
ContextCompat.getSystemService(this,T::class.java)
Ссылка на kotlin упоминается нижеИспользование call-сайта не очень красиво.Почему следующее использование не рекомендуется?
ContextCompat.getSystemService(this, NotificationManager::class.java)
Вместо этого мы можем теперь написать это так:
systemService<NotificationManager>()
Есть ли другие преимущества в таком сценарии, кроме того, что код выглядит чище?
Примечание: пример взят из I / O '18