如何在Kotlin中为枚举自定义toString()方法?
enum class GuideType(type: String) {
DEF_TYPE("default"),
override fun toString(): String {
return type // not working!
}
}
答案 0 :(得分:2)
默认构造函数参数必须为var
或val
,才能在init
块之外访问。另外,您需要在最后一个枚举项之后添加半色,以添加任何新功能或替代。
enum class GuideType(var type: String) {
DEF_TYPE("default");
override fun toString(): String {
return type // working!
}
}
答案 1 :(得分:2)
在主构造函数中,如果希望全局可见(在类/枚举方法中本地包含),则需要使用var
或val
。否则,它只是在本地进行初始化。考虑一下:
public GuideType (String type) {}
与此相比:
private String type;
public GuideType (String type) { this.type = type; }
// Getters and setters
如果没有var
或val
,它将产生与第一个 1 大致相同的东西。您还可以在init
块中以及在类级变量初始化中访问它。因此,为了在方法中使用它,请在val前面加上
enum class GuideType(val type: String) { ... }
由于变量(可能)不会被更改,因此它也应该是val. You can, of course, use
var`。
请注意,这适用于主要构造函数。二级构造函数的工作方式不同。
1:Kotlin还将产生一堆空安全的东西,包括@NotNull和null检查,但是代码仍然是大致等效的
答案 2 :(得分:0)
您可以使用以下方法扩展Enum类:
id_token