Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create Custom Dagger 2 Scope with Kotlin

I'm trying to convert a Java code into Kotlin for custom dagger scope creation.

Here is Java code:

@Documented
@Scope
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomScope {
}

Once converted into kotlin here is the result

@Scope
@Documented
@Retention(RetentionPolicy.RUNTIME) annotation class CustomScope 

I have a type mismatch with @Retention(RetentionPolicy.RUNTIME).I have the following error message :Required Type is AnnotationRetention but RetentionPolicy type was found.

Also @interface seems to have been replaced.

like image 900
Abba Avatar asked Dec 31 '17 05:12

Abba


1 Answers

The Retention annotation class which you might have used is from the Kotlin's library (from the package kotlin.annotation).

It expects a property of the enum type AnnotationRetention. So, you can do something like this:

@MustBeDocumented
@Scope
@Retention(AnnotationRetention.RUNTIME)
annotation class CustomScope

Btw, if you look at the Annotations.kt file, you will see that that the Retention annotation will take the default property AnnotationRetention.RUNTIME when you don't pass anything to it.

So, just @Retention annotation will do too.

like image 110
jayeshsolanki93 Avatar answered Sep 21 '22 20:09

jayeshsolanki93