gpt4 book ai didi

Kotlin 中的泛型 : how to access companion object

转载 作者:行者123 更新时间:2023-12-02 13:09:19 27 4
gpt4 key购买 nike

我有 2 个枚举

enum class Enum1{
X1, X2, X3, X4;
companion object {
val default = X2
}
}
enum class Enum2{
Y1, Y2, Y3;
companion object {
val default = Y3
}
}

它们都有带有默认变量的伴生对象。

我有两种返回该值的方法

private fun printDefaultEnum1() : String{
return Enum1.default.toString()
}

private fun printDefaultEnum2() : String{
return Enum2.default.toString()
}

Kotlin 中是否可以优化此代码并只有一个接受类型并打印相应值的泛型方法?

最佳答案

可以通过使用伴生对象可以实现接口(interface)的事实来做到这一点:

interface DefaultEnum<E : Enum<E>> {
val default: E
}

fun genericPrint(e: DefaultEnum<*>): String = e.default.toString()

然后可以按如下方式使用:

companion object : DefaultEnum<Enum1> {
override val default: Enum1 = X2
}

genericPrint(Enum1) // This calls it with the companion object of Enum1

关于Kotlin 中的泛型 : how to access companion object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51013403/

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