@Inject lateinit var против конструктора @Inject на рукояти кинжалаAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 @Inject lateinit var против конструктора @Inject на рукояти кинжала

Сообщение Anonymous »

Читая документацию, я обнаружил, что Hilt можно использовать двумя способами: Я пытаюсь понять, какой вариант лучше. Лично я обнаружил проблему в конструкторе @Inject. Когда мне нужно передать в конструктор параметры, не относящиеся к Hilt, от вас требуется сгенерировать много шаблонного кода, который только заставляет вас усложнять ваш проект. Например:
Имея такой класс:

Код: Выделить всё

@AndroidEntryPoint
class CustomClass @Inject constructor (val repository: Repository, val name: String) {
Предположим, я хочу внедрить только параметр репозитория, но хочу передать параметр имени во время инициализации следующим образом:

Код: Выделить всё

val customClass = CustomClass("name")
с помощью конструктора @Inject Мне приходится добавлять много шаблонов и сложностей:

Код: Выделить всё

@AndroidEntryPoint
class CustomClass @AssisgtedInject constructor (
val repository: Repository,
@Assisted val name: String
) {

@AssistedFactory
interface CustomClassFactory {
fun create(name: String): CustomClass
}
}
Чтобы добавить больше шаблонности и бесполезной сложности, вам придется создавать класс CustomClass с интерфейсом вместо обычного класса и вызывать метод create.
С другой стороны, если вы вместо этого сделаете это с помощью @Inject lateinit var, все будет так просто:

Код: Выделить всё

@AndroidEntryPoint
class CustomClass(val name: String) {
@Inject lateinit var repository: Repository
}
Теперь подумайте, что это очень простой пример с одним параметром, отличным от Hilt, но, как вы знаете, он может стать намного более масштабным.
Итак, почему почти каждый пример проекта использует конструктор @Inject, если @Inject lateinit var — гораздо лучший вариант? Что я здесь теряю?


Подробнее здесь: https://stackoverflow.com/questions/791 ... agger-hilt
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • @Inject lateinit var против конструктора @Inject на рукояти кинжала
    Anonymous » » в форуме Android
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Как использовать Assisted Inject и Inject с рукояткой кинжала?
    Гость » » в форуме Android
    0 Ответы
    80 Просмотры
    Последнее сообщение Гость
  • Тестирование рукояти кинжала EntryPointAccessors
    Anonymous » » в форуме Android
    0 Ответы
    49 Просмотры
    Последнее сообщение Anonymous
  • Тестирование рукояти кинжала EntryPointAccessors
    Anonymous » » в форуме Android
    0 Ответы
    55 Просмотры
    Последнее сообщение Anonymous
  • Java.lang.NoClassDefFoundError: kotlin/streams/jdk8/StreamsKt после добавления рукояти кинжала в проект
    Гость » » в форуме Android
    0 Ответы
    73 Просмотры
    Последнее сообщение Гость

Вернуться в «Android»