当前位置: 首页 > news >正文

网站建设团队架构漳州微网站建设价格

网站建设团队架构,漳州微网站建设价格,wordpress英文导航模板,站长之家域名解析Kotlin的数据类、密封类、枚举类 数据类 与Java等语言不同#xff0c;kotlin创建只包含数据的类时#xff0c;需要在类名前声明关键字#xff1a;data。 data class KotlinBean (val brand : String) 在kotlin中#xff0c;编译器会自动的从主构造函数中根据所有声明的…Kotlin的数据类、密封类、枚举类 数据类 与Java等语言不同kotlin创建只包含数据的类时需要在类名前声明关键字data。 data class KotlinBean (val brand : String) 在kotlin中编译器会自动的从主构造函数中根据所有声明的属性提取以下函数 · equals() · hashCode() · toString() · componentN() functions (对应于属性按声明顺序排列) · copy() 如果这些函数已经在类中被明确定义了或者从超类中继承而来就不再会生成。不是所有的kotlin类都能声明为数据类一般数据类声明都要满足以下条件 · 主构造函数至少包含一个或多个参数 · 所有的主构造函数的参数必须标识为val或var · 数据类不可声明为abstractopensealed或者inner · 数据类不能继承其他类(但是可以实现接口)。 Copy() 望词生意此方法作用就是复制我们可以使用该函数复制对象并修改部分属性比如对于上面的KotlinBean类实现类似下面示例 fun copy(brand: String this.brand) KotlinBean(brand) 需要修改数据类的属性时用copy()示例 data class KotlinBean (val brand : String)fun main(args: ArrayString) {val jack KotlinBean(brand Jack)val olderJack jack.copy(brand olderJack)println(jack)println(olderJack) } 对应控制台命令输出为 数据类及其解构声明 解构声明kotlin允许展示单个复合值并使用它来初始化多个单独的变量。例如 val ptPoint(111,222) val (x,y)pt println(x) //打印111 println(y) //打印222 元组(标准数据类) Kotlin的标准库提供了Pair(元组)和Triple(三元元组)可以把多个值同时赋给一个变量或者同时给多个变量赋值。在新版的Kotlin中已经删除了多元元组也就是只有Pair和Triple。 通常我们在对变量进行赋值时只能附带一个值例如 val name batman 通过元组对变量进行多个赋值构造时也都可以通过泛型指定各个位置的对象类型 fun main(args: ArrayString) {val batMan TripleString,String,Int(Bluce,technology,10000)val jokerMan PairString,String(joker,Gotham)println(batMan.first)println(batMan.second)println(batMan.third)println(----------------------)println(jokerMan.first)println(jokerMan.second) } 对应的控制台输出为 可以发现Kotlin的元组在进行单独类多数据交互情景下比Java友好(Java还要先声明一个bean类然后进行set/get操作)。值得一提的是上述示例也用到了元组的常用API比如Pair的 pair.first //获取第一个元素 pair.second //获取第二个元素 Tuples的方法 tuples.first //获取第一个元素 tuples.second //获取第二个元素 third.third //获取第三个元素 两个类还都有toList()方法可以把存储的对象转化为List这里不做赘述。 密封类 密封类用于表示受限制的类层次结构当一个值只能在一个集合中取值时而不能取其他值时。在某种意义上这是枚举类的扩展(枚举类型的值集合也是受限的但每个枚举常量只存在一个实例而密封类的一个子类可以有可包含状态的多个实例)。 声明密封类需要用关键字sealed来修饰。被sealed修饰的类默认是open的所以可以被继承而不需要显式使用open修饰符。虽然密封类可以有子类但是所有的子类必须要内嵌在密封类中。 sealed不能修饰interfaceabstract class(会报warning但是不会出现编译错误) sealed class SealedClass{class ExtendClass1: SealedClass(){}class ExtendClass2: SealedClass(){} }fun check(sealedClass: SealedClass): String when(sealedClass){is SealedClass.ExtendClass1 - 1is SealedClass.ExtendClass2 - 2} 在密封类中使用 when 表达式 的时候如果能够验证语句覆盖了所有情况就不需要为该语句再添加一个 else 子句了。 枚举类 枚举类就是一组命名的常数是指将变量的值一一列举出来变量的值只限于列举出来的值的范围内。 枚举类的最基本的用法是实现类型安全的枚举其中枚举常量用逗号分隔每个枚举常量都是一个对象。 enum class Color{RED,YELLOW,BLUE,GREEN } 枚举初始化 每一个枚举都是枚举类的实例它们都可以被初始化 enum class Color(val rgb: Int) {RED(0xFF0000),YELLOW(0xFFFF00),GREEN(0x00FF00),BLUE(0x0000FF) } 通常用法也较简单 fun main(args: ArrayString) {println(Color.YELLOW.name)println(Color.YELLOW.ordinal) } 对应的控制台输出为 细心的你肯定会发现上述的两个参数.name和.ordinal。在枚举类中每个枚举常量都具有在枚举类声明中获取其名称与位置的属性 val name: String //名称 val ordinal: Int //枚举值所在枚举数组中定义的顺序 换言之每个枚举类中的常量都可以 .name 拿到名称.ordinal 拿到位置(从0开始算起)。 如果要指定位置则可以使用其构造函数 enum class Shape(value:Int){ovel(100),rectangle(200) } 枚举类还支持以声明自己的匿名类及相应的方法、以及覆盖基类的方法。例如 enum class Fruit {EATING {override fun signal() DRINKING},DRINKING {override fun signal() EATING};abstract fun signal(): Fruit } 这里要注意的是如果枚举类定义任何成员要使用分号将成员定义中的枚举常量定义分隔开。 使用枚举常量 Kotlin 中的枚举类具有合成方法允许遍历定义的枚举常量并通过其名称获取枚举常数。假设枚举类的名称是 EnumClass格式如下 EnumClass.valueOf(value: String): EnumClass // 转换指定 name 为枚举值若未匹配成功会抛出IllegalArgumentException EnumClass.values(): ArrayEnumClass // 以数组的形式返回枚举值 对应的简单示例如下 enum class Color {RED,YELLOW,BLUE,GREEN }fun main(args: ArrayString) {var color:ColorColor.BLUEprintln(Color.values())println(Color.valueOf(RED))println(color.name)println(color.ordinal) } 相应的控制台输出为 枚举常量还实现了 Comparable 接口其中的自然顺序是它们在枚举类中定义的顺序对此接口有兴趣的可以自己去尝试实现验证。 End如有问题请留言交流。
http://www.pierceye.com/news/326052/

相关文章:

  • 小游戏网站怎么做建站徐州seo代理计费
  • 苏州网站建设数据网络淘宝网店怎么运营起来
  • 网站建设项目实战实训报告凡科建网站
  • 网站建设程序编制做网站优化的教程
  • 已有网站 需要整改 怎么做信息网官网
  • 中石建基础设施建设有限公司网站南阳网站建设的公司
  • 广东建设银行网站营销渠道策略
  • 廊坊开发区规划建设局网站网站域名续费一年多少钱
  • 网站建设需要哪些准备国外网站顶部菜单设计
  • 免费域名注册和免费建站深圳品牌沙发
  • php网站开发就业网站开发研究综述
  • 华升建设集团有限公司网站网站如何做那种诱导广告
  • 做资讯网站要什么手续科技设计公司网站模板下载
  • 西安互联网网站建设湘潭网站建设设计
  • 微网站开发方案模板前程无忧招聘网下载app官网
  • 网站推广方式大全如何写软文赚钱
  • 同城同镇网站建设做幼儿网站的目标
  • 上饶网站建设兼职辽宁沈阳做网站
  • 阳江企业网站好的外包公司
  • 深圳做分销商城网站我有域名跟空间能教我做网站吗
  • 网站子目录做推送用什么网站
  • 网站手机优化网站上传空间的ip地址
  • 做网站增加流量自助微信网站设计
  • 网站推广的6个方法是什么软件开发合同模板范本1
  • 营销网站手机站wordpress的主题目录
  • 达州建设企业网站重视网站商务通
  • 淘宝网站怎么做视频58做二手车网站应该怎么推广
  • 自动翻译网站软件cf刷枪网站怎么做的
  • 示范校建设验收网站网站对话窗口怎么做
  • phpcms 移动网站模板怎么做个人网页