PurelyImplements
Instructs the Kotlin compiler to treat annotated Java class as pure implementation of given Kotlin interface. "Pure" means here that each type parameter of class becomes non-platform type argument of that interface.
Example:
class MyList<T> extends AbstractList<T> { ... }
Methods defined in
MyList<T>
use
T
as platform, i.e. it's possible to perform unsafe operation in Kotlin:
MyList<Int>().add(null) // compiles
@PurelyImplements("kotlin.collections.MutableList")
class MyPureList<T> extends AbstractList<T> { ... }
Methods defined in
MyPureList<T>
overriding methods in
MutableList
use
T
as non-platform types:
MyPureList<Int>().add(null) // Error
MyPureList<Int?>().add(null) // Ok
Constructors
<init>
Instructs the Kotlin compiler to treat annotated Java class as pure implementation of given Kotlin interface. "Pure" means here that each type parameter of class becomes non-platform type argument of that interface.
PurelyImplements
(
value
:
String
)
Properties
value
val
value
:
String
Extension Properties
annotationClass
Returns a KClass instance corresponding to the annotation type of this annotation.
val
<
T
:
Annotation
>
T
.
annotationClass
:
KClass
<
out
T
>