kotlin-reflect相关内容

属性设置器的方法参考

如何在不使用kotlin-reflect的情况下获得对属性设置器的方法引用? 基本上,如果我用Java方式编写代码,那就超级简单 fun setValue(i: Int) = Unit val a: (Int) -> Unit = this::setValue 但是对于var value: Int我要得到 var value = 1 val a: KMutableProper ..
发布时间:2021-02-15 19:20:37 其他开发

Kotlin的反思:未知类型参数

我正在对科特林的倒影进行一些实验. 我正在尝试使用其参数获取泛型类的反射对象. 在Java中,这将是ParameterizedType. 使用Java的反射API来获取此类信息的方法有些复杂:创建泛型类的匿名子类,然后获取其超类型的第一个参数. 这是一个例子: @Suppress("unused") @PublishedApi internal abstract cl ..
发布时间:2020-04-26 12:51:58 其他开发

如何在Kotlin中获取KType?

我正在尝试在Kotlin中使用反射功能,但似乎无法理解如何获取KType值. 假设我有一个将短语映射到对象工厂的类.如有歧义,用户可以提供type参数,将搜索范围缩小到仅返回该类型对象(或某些子类型)的工厂. fun mapToFactory(phrase: Phrase, type: KType = Any::class): Any {...} type需要接 ..
发布时间:2020-04-26 12:38:46 其他开发

在Kotlin中合并/合并数据类

是否可以在不指定所有属性的情况下合并kotlin数据类? data class MyDataClass(val prop1: String, val prop2: Int, ...//many props) 具有以下签名的功能: fun merge(left: MyDataClass, right: MyDataClass): MyDataClass 此函数检查两个类上的每个属 ..
发布时间:2020-04-26 12:29:11 其他开发

反射调用函数并使用默认参数

提供以下功能 fun function(x: Int = 12) { println("x = $x") } 如何在不指定x的情况下使用反射调用它(或者以某种方式使用默认值,不对其进行硬编码)? 解决方案 您可以使用::function.callBy(emptyMap()) // is just function() 如果您有许多没有默认值的参数,事情将会变得混乱: ..
发布时间:2020-04-26 12:06:58 其他开发

使绑定的类引用返回协变类型的目的是什么?

我正在思考,我遇到了这个问题.通过::class语法使用绑定类引用时,我得到了协变KClass类型: fun foo(entry: T) { with(entry::class) { this // is instance of KClass } } 我可以从文档中学到,如果它是T子类型的实例,则将返回对象的确切类型,因此可以使用方差修 ..
发布时间:2020-04-26 11:53:54 其他开发