Nulable аннотация показывает ошибку в Dagger2

207
15 января 2018, 08:29

У меня есть метод который может вернуть nullable обьект , я добавляю соответствующую аннотацию в метод и во все остальные методы которые используют этот обьект, но все равно получаю ошибку

Error:(17, 7) error: services.objects.response.CallServicePart is not 
nullable, but is being provided by 
@ui.dagger.dynamicFormComponent.PerDynamicForm @Provides 
@android.support.annotation.Nullable 
services.objects.response.CallServicePart 
ui.dagger.dynamicFormComponent.DynamicModule
.getCallServicePart(models.AppModel)
at:     services.objects.response.CallServicePart is injected at
ui.fragments.DynamicFormFragment.mServicePart
ui.fragments.DynamicFormFragment is injected at
ui.dagger.dynamicFormComponent.DynamicFormComponent.inject(iFragment)

Вот мой модуль

@Module
public class DynamicModule
{
...///
@PerDynamicForm
@Provides
@Nullable
CallServicePart getCallServicePart(AppModel iAppModel)
{
    return iAppModel.getServicePart();
}
@PerDynamicForm
@Provides
@Nullable
ServicePartFormQuestionsManager getServicePartFormQuestionsManager(@CallNumber long iCallNumber, @Nullable CallServicePart iServicePart)
{
    ServicePartFormQuestionsManager manager = null;
    if (iServicePart != null)
    {
        manager = CallsManager.getInstance().getOpenCallData(iCallNumber).getServicePartFormQuestionManagerForPartCode(iServicePart.getPartCode());
    }
    return manager;
}
...///
}

Что делаю не так?

Answer 1

Аннотация @Nullable говорит о том, что возвращаемое значение параметра, поля или метода может быть .

  • If a {@code @Provides} method is marked {@code @Nullable}, Dagger will only

  • allow injection into sites that are marked {@code @Nullable} as well. A component that
  • attempts to pair a {@code @Nullable} provision with a non-{@code @Nullable} injection site
  • will fail to compile.

Если метод отмечен как @Nullable, Dagger допускает инъекцию только на ссылки с отметкой @Nullable. Компонент, который пытается скомпилировать условие @Nullable с помощью команды non@Nullable, зафейлится.

Error:(17, 7) error: services.objects.response.CallServicePart is not 
nullable

Вот он и ругается, проверьте что класс имеет аннотации, на всякий случай сделайте clean project и rebuild.

READ ALSO
Как реализовать Enum чтобы использовать в Switch?

Как реализовать Enum чтобы использовать в Switch?

Как правильно реализовать данные чтобы в switch я мог передать position который int возвращяетА в case некое значение в виде названия

205
Не корректно работает функция

Не корректно работает функция

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

256
Проблема подгрузки картинок в слайдере!

Проблема подгрузки картинок в слайдере!

У нас есть кнопка 'Click' , когда нажимаем открывается модальное окно , в модальном окне у нас есть слайдер pgwslider(http://pgwjscom/pgwslider/), проблема в том...

283
Не работает bootstrap modal внутри ballon

Не работает bootstrap modal внутри ballon

Как запускать modal bootstrap который рендерится в балун? Для запуска использую функцию:

208