自定义枚举项

时间:2019-05-22 20:26:37

标签: kotlin enums

据我所知,在Swift中我们可以像这样在枚举中创建自定义项目

enum MyEnum {
  case item1
  case item2
  case custom(param1: String)

  var param1: String {
    switch self {
    case .item1:
      return "Item 1"
    case .item2:
      return "Item 2"
    case let .custom(param1):
      return param1
    }
  }
}

在科特林有可能吗?如果是,该怎么办?

2 个答案:

答案 0 :(得分:2)

在Kotlin中,Enum无法做到这一点,但是您可以对Sealed类执行类似的操作:

sealed class MySealedClass(val param1: String) {
    object Type1 : MySealedClass("Type 1")
    object Type2 : MySealedClass("Type 2")
    class Custom(param1: String) : MySealedClass(param1)
}

请参阅this以供参考。

答案 1 :(得分:0)

是的,可以。您只需要给enum class一个属性,然后为每个枚举项初始化即可。

enum class Test(val param: String) {
    Item1("Item 1"),
    Item2("Item 2"),
    Custom("Hello")
}

println(Test.Custom.param) // Hello