mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-09 08:31:29 +00:00
JVM: Support using KClass as annotation parameter type
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
class O {}
|
||||
class K {}
|
||||
|
||||
@Ann(args={O.class, K.class})
|
||||
class Test {
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import kotlin.reflect.KClass
|
||||
import java.lang.annotation.*
|
||||
|
||||
Retention(RetentionPolicy.RUNTIME)
|
||||
annotation
|
||||
class Ann(val args: Array<KClass<*>>)
|
||||
|
||||
fun box(): String {
|
||||
val args = javaClass<Test>().getAnnotation(javaClass<Ann>()).args
|
||||
val argName1 = args[0].simpleName ?: "fail 1"
|
||||
val argName2 = args[1].simpleName ?: "fail 2"
|
||||
return argName1 + argName2
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
class OK {}
|
||||
|
||||
@Ann(arg=OK.class)
|
||||
class Test {
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import kotlin.reflect.KClass
|
||||
import java.lang.annotation.*
|
||||
|
||||
Retention(RetentionPolicy.RUNTIME)
|
||||
annotation
|
||||
class Ann(val arg: KClass<*>)
|
||||
|
||||
fun box(): String {
|
||||
val argName = javaClass<Test>().getAnnotation(javaClass<Ann>()).arg.simpleName ?: "fail 1"
|
||||
return argName
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
class O {}
|
||||
class K {}
|
||||
|
||||
@Ann(args={O.class, K.class})
|
||||
class Test {
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import kotlin.reflect.KClass
|
||||
import java.lang.annotation.*
|
||||
|
||||
Retention(RetentionPolicy.RUNTIME)
|
||||
annotation
|
||||
class Ann(vararg val args: KClass<*>)
|
||||
|
||||
fun box(): String {
|
||||
val args = javaClass<Test>().getAnnotation(javaClass<Ann>()).args
|
||||
val argName1 = args[0].simpleName ?: "fail 1"
|
||||
val argName2 = args[1].simpleName ?: "fail 2"
|
||||
return argName1 + argName2
|
||||
}
|
||||
Reference in New Issue
Block a user