kotlin 中的枚举类和 “when”

文章目录

  • 场景
  • 枚举类
  • when
  • 总结

场景

java 中的枚举类还有 switch 结构跟 kotlin 中的有什么不同,怎么更好更快的学习它们

枚举类

  • kotlin 枚举类的结构: enum + class + 类名
  • kotlin 是默认可见性,所以 public 可以省略
  • 注意:enum 在 kotlin 中,只有在 class 前面才是有特殊意义的(表示枚举)。

看下面 java 与kotlin 的对比

//java
public enum Colors {
    RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET
}
//kotlin
enum class Colors{
    RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET
}

when

  • 在 kotlin 中使用 when 取代 java 中的 switch 结构
  • 可以使用 lambda 表达式,简化代码
//java
package javas;

public class SwitchEnums {
    public static void main(String[] args){
        SwitchEnums switchEnums = new SwitchEnums();
        String chinese = switchEnums.getChinese(Colors.GREEN);
        System.out.println(chinese);

    }
    public String getChinese(Colors color){
        String strColor =null;
        switch(color){
            case RED:
                strColor = "红";
                break;
            case ORANGE:
                strColor = "橙";
                break;
            case YELLOW:
                strColor = "黄";
                break;
            case GREEN:
                strColor = "绿";
                break;
            case BLUE:
                strColor = "蓝";
                break;
            case INDIGO:
                strColor = "靛";
                break;
            case VIOLET:
                strColor = "紫";
                break;
            default:
        }
        return strColor;
    }
}

//kotlin
package kotlins

enum class Colors{
    RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET
}

fun getChinese(color: Colors) =
        when(color){  //when 是一个有返回值的表达式,因此可以返回 when 表达式的 表达式函数
            Colors.RED -> "红"  //颜色和枚举常量相等,返回对应的字符串
            Colors.ORANGE -> "橙"
            Colors.YELLOW -> "黄"
            Colors.GREEN -> "绿"
            Colors.BLUE -> "蓝"
            Colors.INDIGO -> "靛"
            Colors.VIOLET -> "紫"
        }

fun main(args: Array<String>){
    println(getChinese(Colors.GREEN))
}

总结

  • kotlin 枚举类和 when 还是很容易掌握的
  • 比较中发现 kotlin 看起来简化好多代码,看起来更直观
  • 我们可以通过与熟悉的语言进行对比,更好更快的学习另外一门语言

如果对你有一点点帮助,请点个赞,你的鼓励就是我写作的动力。谢谢!
欢迎长按下图 -> 识别图中二维码 或者 扫一扫 关注我的公众号:

shenshizhong.png

我的csdn:http://blog.csdn.net/shenshizhong
我的简书:http://www.jianshu.com/u/345daf0211ad

猜你喜欢

转载自blog.csdn.net/shenshizhong/article/details/77972941
今日推荐