kotlin 中的枚举类和 “when”

来源:互联网 发布:长沙黑马程序员 编辑:程序博客网 时间:2024/06/03 11:34

文章目录

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

场景

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

枚举类

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

看下面 java 与kotlin 的对比

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

when

  • 在 kotlin 中使用 when 取代 java 中的 switch 结构
  • 可以使用 lambda 表达式,简化代码
//javapackage 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;    }}
//kotlinpackage kotlinsenum 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

原创粉丝点击