使用Kotlin进行Dagger2 @Nullable注释

时间:2017-03-25 17:44:02

标签: android kotlin dagger-2

来自匕首模块:

Error: Unexpected request: GET http://35.161.59.162:4040/usr/1
No more request expected
    at $httpBackend (angular-mocks.js:1420)
    at sendReq (angular.js:11517)
    at serverRequest (angular.js:11227)
    at processQueue (angular.js:15961)
    at angular.js:15977
    at Scope.$eval (angular.js:17229)
    at Scope.$digest (angular.js:17045)
    at Scope.$apply (angular.js:17337)
    at bootstrapApply (angular.js:1749)
    at Object.invoke (angular.js:4665)

我注入的地方

  @Provides @PerMediaSession @Nullable
    MediaControllerCompat provideMediaController(Context appContext, MediaSessionCompat mediaSessionCompat) {
        try {
            return new MediaControllerCompat(appContext, mediaSessionCompat.getSessionToken());
        } catch (RemoteException e) {
            e.printStackTrace();
            return null;
        }
    }

我收到以下编译错误

class PlayerPresenter
@Inject constructor(val fileManager: FileManager,
                    @Nullable val mediaController: MediaControllerCompat?) : PlayerContract.Presenter { <...>

我试图将dagger模块转换为Kotlin,Dagger就是这样看Jetbrains @Nullable注释,但由于某种原因没有在构造函数类中看到注释。

我使用Dagger 2.9

1 个答案:

答案 0 :(得分:0)

与Kotlin的互动性很好,这是我的疏忽。

问题发生的原因是我在dagger模块中提供了接口实例,并且提供了方法接收会话compat作为没有Nullable注释的参数。 Dagger确实理解Kotlin中没有任何注释的可空类型。