小编Júl*_*ira的帖子

我可以利用使用泛型的密封类的优点吗?

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

我想做这样的事情,但我还没有找到一种方法来满足我想要的一切并编译。

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)
}
Run Code Online (Sandbox Code Playgroud)

generics types casting kotlin

5
推荐指数
1
解决办法
446
查看次数

标签 统计

casting ×1

generics ×1

kotlin ×1

types ×1