kotlin - 如何获取 KmutableProperty i Kotlin 的容器?
问题描述
我val prop:KMutableProperty1<<A,Any>>
在 A 类中有一个字段 x,我可以通过它获取字段名称,prop.name
但是如何获取它的容器类名称 (A)?
解决方案
我认为这将取决于您如何获得此属性参考,但如果您这样做:
class A(var x: Int = 0)
val prop: KMutableProperty1<A, Any> = A::x as KMutableProperty1<A, Any>
然后,这一系列尝试的强制转换可以为您提供一个KClass
实例:
val kclass = (prop as? MutablePropertyReference1)?.owner as? KClass<*>
println(kclass) // class A
同样,这几乎不会在所有情况下都有效,因为这些属性实际上返回的接口还有其他实现,因此转换可能会失败。
推荐阅读
- pyspark - 创建一个火花数据框列由一个列表作为数据类型
- nginx - 如何在 LUA 中使用私钥签署 JWT
- javascript - 简单的 TypeScript 类给出 TypeError
- powershell - wix 工具集:如何根据 DirectorySearch 的结果运行或不运行 PowerShell
- xamarin.forms - 如何将 AppShell 上的 DataTemplate 中的配置文件图像设置为 Url 源
- c# - 使用 MVC Core 条带“无此类付款”错误
- c# - Observable.Do 等价于 Enumerable
- c# - 对来自自定义 InputSelect 的 Blazor 验证消息使用模型显示名称
- xml - Go XML Marshal:切片的意外输出
- javascript - 如何用 puppeteer 和 jest 编写健壮的测试?