Полезен ли этот вариант использования котлинового типа? - PullRequest
0 голосов
/ 06 сентября 2018

Параметры 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

1 Ответ

0 голосов
/ 06 сентября 2018

Это полностью зависит от личного мнения, поскольку обе функции будут выполнять одно и то же.

Люди будут склонны считать метод расширенного расширения Kotlin более идиоматическим, поскольку он использует расширенную языковую функцию для обеспечения более простого синтаксиса, чем тот, который вы должны были бы использовать в противном случае. Это не значит, что вы обязательно должны его использовать - решите, нравится ли вам это для себя.

...