1、枚举基本用法
fun main(args: Array<String>) {
println(Week.Friday)
getDay(Week.Saturday)
}
fun getDay(week: Week)
{
when(week)
{
Week.Monday-> println("上班")
Week.Sunday-> println("休息")
}
}
enum class Week{
Monday,Tuesday,Wednesday,Thursday,Friday,Saturday ,Sunday
}
输出:
2、枚举高级用法
fun main(args: Array<String>) {
println(Color.RED.r)
println(Color.RED.g)
println(Color.RED.b)
}
enum class Color(var r:Int,var g:Int,var b:Int){
RED(255,0,0),GREEN(0,255,0),BLUE(0,0,255)
}
输出:
3、数据类(关键字data)
类似于java中的bean,没有什么实际业务逻辑,只是用于封装数据
fun main(args: Array<String>) {
var news=News("标题","内容","作者","20170101")
println(news.title)
}
/**
* 默认生成一些方法
* 构造函数
* get set
* toString
* hashcode
* equeals
* copy
*/
data class News(var title:String,var content:String,var author:String,var time:String)
输出:
4、密封类(关键字sealed)
枚举类封装的是数据
密封类封装的是类型
fun main(args: Array<String>) {
val startk = JonSnow()
val h= hasRight(startk)
println(h)
}
/**
* 问题:假设国王有五个儿子RobStark、SansaStark、AryaStark、BrandonStark、jonSnow,最后一个儿子没有继承权,其余的都有
* 思路:判断有没有继承权
* 先把所有有继承权的(数量固定) 放在一起 其他都不用管了
*/
fun hasRight(startk: NedStark): Boolean {
return when (startk) {
is NedStark.AryaStark -> true
is NedStark.SansaStark -> true
is NedStark.RobStark -> true
is NedStark.BrandonStark -> true
else -> false
}
}
//斯塔克
sealed class NedStark {
//密封类封装的是类型 类型是确定的
class RobStark : NedStark()
class SansaStark : NedStark()
class AryaStark : NedStark()
class BrandonStark : NedStark()
}
class JonSnow : NedStark()
输出: