gpt4 book ai didi

generics - 我可以使用泛型来利用密封类的优势吗?

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

我想创建一个通用的“find”方法,它找到一个提供的实体,该实体实现了一个密封类并返回它而不必重复多态。

我想做这样的事情,但我还没有找到一种满足我想要的所有内容并进行编译的方法。

sealed class Spell(val id: Long)
class Fireball(id: Long, val name: String): Spell(id)
class Storm(id: Long, val size: String): Spell(id)

inline fun <reified T: Spell> find(id: Long): T =
when (T) {
Fireball -> Fireball(id, "fireball")
Storm -> Storm(id, "3 acres")
}

fun main() {
find<Fireball>(3)
}

最佳答案

这个怎么样?

inline fun <reified T : Spell> find(id: Long): T =
when (T::class) {
Fireball::class -> Fireball(id, "fireball")
Storm::class -> Storm(id, "3 acres")
else -> throw IllegalStateException()
} as T

关于generics - 我可以使用泛型来利用密封类的优势吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57419311/

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