问题标签 [kotlin-reflect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
782 浏览

reflection - Kotlin 中 KProperty1 的通用扩展

我有以下代码:

我正在尝试KProperty1使用泛型为类创建扩展函数,但我的泛型与我期望的不匹配。main()列出了这两个函数的一些用途,最后有 3 个意想不到的结果,并描述了我应该期待什么。

0 投票
1 回答
360 浏览

spring - kotlin:如何获取 Object 中的字段名称?

我有一@ConfigurationProperties堂课,比如ConfigProperty。我像这样使用它

org.springframework.ui.Model#addAttribute("config1", configProperty.config1) org.springframework.ui.Model#addAttribute("config2", configProperty.config2)

我不想重复自己。所以我想这样:

模型#addAttribute(::configProperty.config1.name, configProperty.config1) 模型#addAttribute(::configProperty.config2.name, configProperty.config2)

但是语法错误,有人有什么建议吗?

0 投票
3 回答
486 浏览

kotlin - Kotlin 反射:如何知道 Kotlin 类是否标有“内部”可见性修饰符

我正在使用 KotlinPoet 和 Auto Service 自动生成代码。我没有找到任何方法来知道带注释的类是否具有“内部”修饰符,因此我可以创建另一个具有相同修饰符的类。例如:

所以我认为使用 Kotlin Reflection 可以获得这些信息,但没有运气。

使用注释器处理器,我可以获得 KClass,但可见性显示为“公共”: 在此处输入图像描述

关于如何做的任何线索?

0 投票
0 回答
1016 浏览

android - 如何为 Kotlin-reflect 设置 proguard?

我目前正在使用 Kotlin-reflect 制作一个模块。当我尝试将二进制文件构建为发布模式时,没有 proguard 错误,但模块无法正常工作。

我会像这样设置 proguard-rules.pro 文件。( https://github.com/square/moshi/issues/402 )

0 投票
2 回答
199 浏览

android - 在 Kotlin 扩展函数中反映“this”的名称

有没有办法在扩展函数中获取“this”的名称?

0 投票
1 回答
45 浏览

kotlin - 是否可以在运行时找到方法,在 Kotlin 中传递变量或字符串名称,就像在 groovy 中一样

例如,在 groovy 中可以使用以下代码执行方法:

这在 Kotlin 中也可以吗?

0 投票
0 回答
612 浏览

generics - 将 JSON 数组转换为列表的更好方法给定一个 KClass通过 Gson

我正在构建一个多平台 JSON 库作为原型,以了解如何构建事物。

目前我有这个扩展函数可以从 JSON 数组转换为对象列表。

为 Jackson 实现这个接口相当简单:

现在我正在尝试对 Gson 做同样的事情:

查看 Java 中的其他答案,这似乎是要遵循的模式:

我的 Kotlin 等效失败:

和:

java.lang.ClassCastException:java.util.ArrayList 无法转换为 [Ljava.lang.Object;

这个:

和这个:

失败:

java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap 无法转换为 io.jvaas.integration.gson.SampleClass

SampleClass的类型在哪里T

如果我删除类型并打印结果

我看到了正确的数据:

[{blah1=文本,blah2=123.0,blah3=567.0},{blah1=文本,blah2=123.0,blah3=567.0}]

类 java.util.ArrayList

类 java.util.ArrayList

打印出该 ArrayList 的第一项,但是我看到它不是 SampleClass 类型,而是 LinkedTreeMap

com.google.gson.internal.LinkedTreeMap 类

将该列表中的每个项目转换为字符串,然后将每个单独的 JSON 块转换为对象似乎可行,但看起来很 hacky

有没有更好的方法来做到这一点?还是 Gson 总是将更复杂的 JSON 数据转换为 TreeMaps 和 LinkedTreeMaps?

0 投票
3 回答
8300 浏览

kotlin - Kotlin 类应该有一个无参数构造函数

我使用以下方法实例化我的对象:

但我在那一行遇到了一个例外:

0 投票
1 回答
1301 浏览

android - Kotlin 默认构造函数中的两种附加类型?

由于我一直在使用kotlin-reflect来调用我的默认值并声明了一个,因此我看到了第二个不同的构造函数。

我已经意识到两个不同的字段int arg3kotlin.jvm.internal.DefaultConstructorMarker arg4添加到我的构造函数中。

我的实际问题是为什么我有这两个字段,它背后的逻辑是什么?

提前致谢。

0 投票
1 回答
1546 浏览

kotlin - 比较kotlin中对象的共同属性值

我正在尝试编写一个方法来比较 Kotlin 中两个对象的“公共属性”(共享相同的名称/类型)。它旨在用于测试,用于将“预期”与不属于同一类型的“实际”对象进行比较。

到目前为止,这是代码的简化版本:

我目前在底部附近的“pair.first.get”下收到此错误消息:

外投影类型KProperty1<out Any, Any?>禁止使用public abstract fun get(receiver: T): R defined in kotlin.reflect.KProperty1

我知道我显然不能使用抽象方法,我应该怎么做呢?