- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用Kotlin反射,我试图检查类的主要构造函数的每个参数的KClass。
给定一个像这样的简单数据类:
data class MyPerson(val name: String, val age: Int)
val modelClass = MyPerson::class
val primaryConstructor = modelClass.primaryConstructor
。
for (param in primaryConstructor.parameters) {
when(param.type) {
is Kotlin.String -> // do string thing
is Kotlin.Int -> // do int thing
}
param.type
,
param.classifier
,
param.type.jvmErasure
等。我找到的最接近的是
param.type.jvmErasure.qualifiedName
,它给了我一个带有KClass完全限定名称的String。但是我真的想要KClass。
最佳答案
您可以使用javaType
的 KType
属性进行比较:
when (param.type.javaType) {
String::class.java -> println("String!")
Int::class.java -> println("Int!")
}
关于reflection - 如何获取Kotlin构造函数参数的KClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49542167/
我正在尝试实现checked Stack基于 Kotlin 中的 java 数组。但是我在将 KClass 与我的通用参数类型一起使用时遇到问题 允许空值。 Java Generic types ar
我想打印我的类(class)的属性值。 fun print() { val cl = this::class cl.declaredMemberProperties.filter {i
码 import kotlin.reflect.full.* class FooBar(val bar: String) fun FooBar.baz(): Unit {println(this.ba
我编写了以下代码来获得 Array 的 KClass . Array::class 但是,这段代码有编译错误。 Kotlin: Array class literal requires a type
我正在尝试构建一个外部模块可以注册的同步类,但我无法使泛型部分工作。 外部模块将注册 SynchronizationBundle在 Synchronizator ,然后应该处理同步。 interfac
在 Kotlin 中,当声明获取类型的 KClass 时,例如 String::class(表示类型将为 String 的值),是否有语法来指示该值可为空(即表示 String? values 而不是
如果我有一个类似 "mypackage.MyClass" 的字符串,如何在运行时(从 JVM)获取对应的 KClass? 最佳答案 您可以使用Java 的方法获取Class 实例Class.forNa
我有一个 Kotlin 类,其主要(也是唯一的)构造函数为空。 我有这个类的引用: val kClass: KClass = MyClass::class 如何使用反射创建此类的实例? 在 Java
KClass定义为 public interface KClass : KDeclarationContainer, KAnnotatedElement, KClassifier 这很棘手,因为类 S
我需要访问通用扩展函数内的类类型。例如,如果我想创建一个扩展函数来返回我正在扩展的类型的成员集合,我会这样做: fun T.getMembers() = this::class.mem
我有以下注释: @Target(AnnotationTarget.CLASS) @Retention(AnnotationRetention.SOURCE) @MustBeDocumented ann
如何使用Kotlinpoet生成下面的代码行? val myMap:Map> 我在初始化块中初始化myMap。 最佳答案 Map::class.asClassName() .parameter
在 java 中,当我有一个 Class<> 实例时,我有返回 Method 的 getMethod,它非常易于使用。 正如我所见,Kotlin 让生活变得更加艰难,因为这种方法不存在。除了将 KCl
我有功能的定义 abstract class AbstractDao(private val dataStore: KotlinEntityDataStore): Dao where T: Persi
在下面的代码中,我无法正确安排输入/输出以使 from() 和 to() 都按预期工作。我试过在属性和函数参数中切换进/出,但总是以不正确的输入错误告终。 class KStateMachine(pr
在 Java 中,我们可以通过 getClass() 解析变量的类,例如 something.getClass()。在 Kotlin 中,我知道 something.javaClass 很好,但我希望
我正在使用 Kotlins KClass 按名称查找类,如下所示: val i: KClass = Class.forName("SampleClass").kotlin 但是,我想省略接口(inte
我试图实现一个简单的自动迁移,它只是将一个可为空的字符串字段添加到我唯一的表中,但由于某种原因,我在 autoMigrations = [AutoMigration(from = 1, to = 2)
假设我们有通用函数: fun foo(o: T) { o::class } o::class的类型是 KClass .为什么有出方差注释,为什么没有KClass (因为 T 的删除是 Any
我正在尝试以下 "simple string"::class.isInstance(kotlin.String) 但是它返回假! I'm using "org.jetbrains.kotlin:kot
我是一名优秀的程序员,十分优秀!