- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我编写了以下代码来获得 Array<*>
的 KClass .
Array::class
但是,这段代码有编译错误。
Kotlin: Array class literal requires a type argument, please specify one in angle brackets
你知道原因或解决方法吗?
最佳答案
在 JVM 平台上,Kotlin Array<T>
types映射到 Java arrays ,与 Java 泛型类型不同,它不受 type erasure 约束,他们是 reified而是。
除其他外,这意味着具有不同元素类型的数组由不同的类表示,这些类具有不同的Class<T>
标记,这些类标记也包含有关元素类型的信息。没有通用数组类型,只有具有不同元素类型的数组的数组类型。
由于通用 Array<T>
不存在,也不能使用它的反射,只能获取指定元素类型的数组类型的运行时类型信息:
val c = Array<Int>::class // corresponds to Java Integer[] type
val d = Array<Array<String>>::class // corresponds to Java String[][]
val e = IntArray::class // corresponds to Java int[]
如果需要检查任意类是否为数组类型,可以通过Java反射来完成:
val c = Array<Int>::class
println(c.java.isArray) // true
关于reflection - 如何获得数组的 KClass?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41207060/
我正在尝试实现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
我是一名优秀的程序员,十分优秀!