文章目录
- 场景
- 枚举类
- 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 看起来简化好多代码,看起来更直观
- 我们可以通过与熟悉的语言进行对比,更好更快的学习另外一门语言
如果对你有一点点帮助,请点个赞,你的鼓励就是我写作的动力。谢谢!
欢迎长按下图 -> 识别图中二维码 或者 扫一扫 关注我的公众号:

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