>Java >java지도 시간 >Dagger 2 오류: '제공할 수 없음'을 어떻게 해결합니까?

Dagger 2 오류: '제공할 수 없음'을 어떻게 해결합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-20 15:37:27596검색

Dagger 2 Error: How Do I Resolve

Dagger 2 오류: "제공할 수 없음" 문제 해결

)문제 요약

Dagger 2는 컴파일할 때 다음 오류를 표시할 수 있습니다. 프로젝트:

error: com.example.MyDependency cannot be provided without an @Inject constructor or from an @Provides-annotated method.

이 오류는 Dagger에 지정된 종속성을 생성하거나 제공하는 데 필요한 정보가 부족함을 나타냅니다.

문제 이해

Dagger 주입해야 하는 객체를 제공하거나 생성하는 메커니즘이 필요합니다. 기본적으로 종속성은 @Inject 주석이 달린 생성자 또는 @Provides 주석이 달린 모듈의 메서드를 가질 것으로 예상합니다.

해결 방법

두 가지 주요 접근 방식이 있습니다. 이 문제 해결:

1. @Inject 주석 생성자 추가:

  • 종속성 클래스의 생성자에 @Inject 주석을 추가합니다. 예를 들면 다음과 같습니다.

    class MyDependency {
      @Inject
      MyDependency() { /**/ }
    }

2. 모듈에 @Provides 주석이 달린 메서드 생성:

  • 모듈 클래스를 생성하고 @Provides 주석이 달린 메서드를 추가합니다. 이 메서드는 원하는 종속성을 생성하거나 바인딩합니다. 예:

    @Module
    class MyModule {
      @Provides
      MyDependency provideMyDependency() {
          return new MyDependency();
      }
    }

추가 고려 사항

  • 제공되는 종속성이 요청되는 종속성과 동일한지 확인하세요.
  • 인터페이스와 슈퍼클래스에 주의하세요. 필요한 경우 구현 또는 확장을 제공합니다.
  • 구현 클래스를 인터페이스나 슈퍼클래스에 연결하려면 @Binds를 사용하는 것이 좋습니다.

위 내용은 Dagger 2 오류: '제공할 수 없음'을 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.