Kotlin基础<三>enum类


枚举类

  在Java中,你不需要为你的enum类传入参数列表,你可以在enum的内部去声明字段和方法。但在Kotlin中,这有点不太一样:

enum class Size(val abbreviation: String) {
    SMALL("S"), MEDIUM("M"),
    LARGE("L"), EXTRA_LARGE("XL")
}

fun main(vararg args:String) {
    println(Size.EXTRA_LARGE.abbreviation)
}
//result
//XL

同样功能的Java代码:

public enum  Size {
    SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");
    private Size(String abbreviation) {this.abbreviation = abbreviation;}
    private String abbreviation;

    public String getAbbreviation() {
        return abbreviation;
    }
}

  对比之下,可以发现,在kotlin中,需用enum class声明一个枚举类而不是enum来声明。需要注意的是,如果在enum class里面如果要声明一个方法,则在枚举常量后面必须要加上分号,例如我再声明一个方法来打印枚举常量的名字(虽然这个声明方法是多此一举,但这里仅仅是为了说明例子才这样做):

enum class Size(val abbreviation: String) {
    SMALL("S"), MEDIUM("M"),
    LARGE("L"), EXTRA_LARGE("XL");//这个分号不能少
    fun printName() = name
}

fun main(vararg args:String) {
    println(Size.EXTRA_LARGE.abbreviation)
    println(Size.SMALL.printName())
}
//result:
//XL
//SMALL