作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Kotlin 代码中使用 java enum io.confluent.kafka.schemaregistry.avro.AvroCompatibilityLevel
public enum AvroCompatibilityLevel {
NONE("NONE", AvroCompatibilityChecker.NO_OP_CHECKER),
// ...
public final String name;
public final AvroCompatibilityChecker compatibilityChecker;
// ...
在 Kotlin 中我想使用
AvroCompatibilityLevel.NONE.name
但这会导致
Overload resolution ambiguity. All these functions match:
public final val name: String? // coming from the field name
public final val name: String // coming from enum
谁能指出如何解决这个问题?
最佳答案
您可以编写一个扩展属性来提取成员字段“name”的值,如下所示:
import kotlin.reflect.full.memberProperties
private val innerNameCache = mutableMapOf<AvroCompatibilityLevel, String>()
val AvroCompatibilityLevel.innerName: String
get() = innerNameCache.getOrPut(this) {
AvroCompatibilityLevel::class.memberProperties.filter { it.name == "name" }[0].get(this) as String
}
fun main() {
println(AvroCompatibilityLevel.NONE.innerName)
}
关于kotlin - 在 Kotlin 中使用 Java 枚举时重载解析歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57202950/
我是一名优秀的程序员,十分优秀!