gpt4 book ai didi

kotlin - 在 Kotlin 中使用 Java 枚举时重载解析歧义

转载 作者:行者123 更新时间:2023-12-02 12:26:55 25 4
gpt4 key购买 nike

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com