Всякий раз, когда я использую аннотацию @Named в своем коде, я всегда получаю «java .lang.String не может быть предоставлено без конструктора @Inject или метода @ Provides-annotated». эта ошибка Пожалуйста, найдите фрагменты кода ниже, но перед проверкой кода позвольте мне прояснить вам, чего я хочу достичь, и с какой именно проблемой я сталкиваюсь. Поэтому я пытаюсь сохранить две функции в моем файле модуля, которые возвращают тот же тип, что и String, для этого я пытаюсь использовать аннотацию @Named, и после этого я получаю вышеупомянутую ошибку, и если я сохраняю только одну функцию для типа String, тогда моя Проект выполняется без ошибок.
Это мой класс компонентов
@Singleton
@Component(modules = [GeneralModules::class])
interface MainComponent {
fun dummyString():String
}
Это мой класс модуля
@Module
class GeneralModules {
@Provides
@Singleton
@Named("name1")
fun getDummyString1(): String{
return "some name"
}
@Provides
@Singleton
@Named("name2")
fun getDummyString(): String{
return "some name"
}
}
Это то, как я использую внутри класса Activity
@Inject
@field:Named("name1")
lateinit var name1: String
@Inject
@field:Named("name2")
lateinit var name2: String
Поэтому, если я удалил @Named из файла модуля, удалите одну функцию и удалить @field: Именованный код из действия, которое он запустит без ошибок.