作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个可以生成任何类型的属性和值的映射的函数
inline fun <reified T : Any> T.propertiesMap() {
for (property in this::class.memberProperties) {
property.get(this)
}
}
property.get(this)
的编译错误
out-projected type [...] prohibits the use of 'public abstract fun get(receiver...
最佳答案
问题是this::class
会生成KClass<out T>
而不是KClass<T>
,这是在T
调用中使用property.get(...)
类型的任何内容所需要的。因此,您可以进行未经检查的强制转换以执行您想要的操作:
fun <T : Any> T.propertiesMap() {
@Suppress("UNCHECKED_CAST")
for (property in (this::class as KClass<T>).memberProperties) {
property.get(this)
}
}
T::class
而不是
this::class
来创建匹配的
KClass<T>
。
inline fun <reified T : Any> T.propertiesMap() {
for (property in T::class.memberProperties) {
property.get(this)
}
}
关于kotlin - kotlin:列出任何对象的属性-方差错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49632755/
我有一个经典的 ASP 页面 (VBscript),它在服务器端生成 XML,然后 Response.Writes。该页面根本没有客户端。 但是我需要将其转换为 JSON。由于我找不到有效的 ASP
我想从客户端应用程序的 HDFS 中读取特定的 SequenceFile。我可以使用 SequenceFile.Reader 来做到这一点,它工作正常。但是是否也可以通过分析抛出的 IOExcepti
我是一名优秀的程序员,十分优秀!