java扩展数据类密封类kotlin
我有一个密封的类,它有不同的子类型。当我试图使用When子句过滤出一个子类型时,我总是得到未解析的引用“name”
sealed class Fruit(val name: String) {
object APPLE : Fruit(“apple”)
data class BANANA(val isFruit: Boolean) : Fruit(“banana”)
}
internal object Random {
fun build(name: String): FruitNinja{
when(name) {
Fruit.APPLE.name -> {
return AppleFruitNinja()
}
// keep getting error here Unresolved reference: name
Fruit.BANANA.name-> {
return BananaFruitNinja()
}
}
}
}
如何使用“name”参数在when子句中过滤并构建自定义对象
# 1 楼答案
正如@rajan正确解释的那样。kali APPLE是一个对象,因此您可以直接访问name。但是,BANANA是一个类,所以需要创建该类的实例,或者我建议创建一个伴生对象:
然后你可以像苹果一样使用它:
最后一点是
build
方法可以用一种更为科特利尼的方式编写: