- Kotlin的嵌套类和内部类都是写在某个类里面,区别在于嵌套类不能访问外部类的成员,如果友嵌套类前加上关键字inner它就会成为一个内部类,这时它就可以访问外部类的成员了。 嵌套类 嵌套类不能访问外部类的成员! class Outer { private val bar: Int = 1 class Nested { fun foo() = 2 } } ... Kotlin的嵌套类和内部类都是写在某个类里面,区别在于嵌套类不能访问外部类的成员,如果友嵌套类前加上关键字inner它就会成为一个内部类,这时它就可以访问外部类的成员了。 嵌套类 嵌套类不能访问外部类的成员! class Outer { private val bar: Int = 1 class Nested { fun foo() = 2 } } ...
- Kotlin扩展 Kotlin提供了用一个新的函数来扩展一个类的能力,而不需要继承这个类或用设计模式如装饰者来实现。有了这个能力,我们就可以轻松为那些我们不能改变的第三方包中的类添加功能。为类添加了的函数,可以像类的其他函数一样调用。除了扩展函数外,还可以扩展属性,让你为已存在的类定义新属性。这个Kotlin机制叫扩展函数。 扩展函数 声明一个扩展函数,我们需要在... Kotlin扩展 Kotlin提供了用一个新的函数来扩展一个类的能力,而不需要继承这个类或用设计模式如装饰者来实现。有了这个能力,我们就可以轻松为那些我们不能改变的第三方包中的类添加功能。为类添加了的函数,可以像类的其他函数一样调用。除了扩展函数外,还可以扩展属性,让你为已存在的类定义新属性。这个Kotlin机制叫扩展函数。 扩展函数 声明一个扩展函数,我们需要在...
- Kotlin密封类 密封类被用于展示受限的类层次结构。当一个值可以有一个来自一个有限集合中的类型,但不能有任何其他类型。在某种程度上来说,它们是枚举类的扩展,一个枚举类型的值的集合也是受限的。但每一个枚举常量只作为一个单例存在,而密封类的子类可以有多个实例,这些实例都可以包含状态。 定义一个密封类,你只需将sealed修饰符放在类名之前。一个密封类可以有多个子类,但它... Kotlin密封类 密封类被用于展示受限的类层次结构。当一个值可以有一个来自一个有限集合中的类型,但不能有任何其他类型。在某种程度上来说,它们是枚举类的扩展,一个枚举类型的值的集合也是受限的。但每一个枚举常量只作为一个单例存在,而密封类的子类可以有多个实例,这些实例都可以包含状态。 定义一个密封类,你只需将sealed修饰符放在类名之前。一个密封类可以有多个子类,但它...
- Kotlin属性与字段 Kotlin属性与字段1、声明属性2、Getters和Setters方法3、返回字段4、返回属性5、编译时常量6、延迟初始化的属性和变量7、重写属性8、委托属性9、Kotlin编译器对委托属性的处理10、提供委托 Kotlin属性与字段 1、声明属性 Kotlin类中的属性可以使用var关键字声明为可变的,或者使用val关键... Kotlin属性与字段 Kotlin属性与字段1、声明属性2、Getters和Setters方法3、返回字段4、返回属性5、编译时常量6、延迟初始化的属性和变量7、重写属性8、委托属性9、Kotlin编译器对委托属性的处理10、提供委托 Kotlin属性与字段 1、声明属性 Kotlin类中的属性可以使用var关键字声明为可变的,或者使用val关键...
- Kotlin可以在声明处或使用处解决泛型歧义 声明处解决泛型歧义 一、上界异常 1.Java泛型类 public class Box<T> { } 12 以下赋值是错误的:错误!错误!错误! 编译器会报类型不匹配的错误。 Box<Object> box1 = new Box<Object>(); Box<String... Kotlin可以在声明处或使用处解决泛型歧义 声明处解决泛型歧义 一、上界异常 1.Java泛型类 public class Box<T> { } 12 以下赋值是错误的:错误!错误!错误! 编译器会报类型不匹配的错误。 Box<Object> box1 = new Box<Object>(); Box<String...
- Kotlin Demo 使用Kotlin实现了电子签名,用Kotlin写Android应用真是舒服。 我自定义了一个SignatureView: package com.wong.testp import android.annotation.SuppressLint import android.content.Context import android.gra... Kotlin Demo 使用Kotlin实现了电子签名,用Kotlin写Android应用真是舒服。 我自定义了一个SignatureView: package com.wong.testp import android.annotation.SuppressLint import android.content.Context import android.gra...
- is操作符检查表达式是否是某一个类型的实例。如果一个不可修改的本地变量或属性被检查特定类型,不需要显式地强制转换: fun getStringLength(obj: Any): Int? { if (obj is String) { // `obj`自动转换为`String`在这个分支 return obj.length } // 在类型检查分支外的`obj... is操作符检查表达式是否是某一个类型的实例。如果一个不可修改的本地变量或属性被检查特定类型,不需要显式地强制转换: fun getStringLength(obj: Any): Int? { if (obj is String) { // `obj`自动转换为`String`在这个分支 return obj.length } // 在类型检查分支外的`obj...
- 条件表达式 如果Kotlin的条件语句(if语句)中只是做赋值操作而已,那么IDE会提示: Return should be lifted out of 'if' 其实就是建议你用条件表达式。 如果下面这个方法: fun maxOf(a: Int, b: Int): Int { if (a > b) { return a } else { retu... 条件表达式 如果Kotlin的条件语句(if语句)中只是做赋值操作而已,那么IDE会提示: Return should be lifted out of 'if' 其实就是建议你用条件表达式。 如果下面这个方法: fun maxOf(a: Int, b: Int): Int { if (a > b) { return a } else { retu...
- Kotlin类与继承、抽象类、嵌套类、内部类、匿名内部类、伴生对象、对象声明、对象表达式 定义属性主构造器次构造函数Kotlin 中没有 new 关键字抽象类内部类嵌套类匿名内部类类的修饰符继承重写方法重写属性派生类的初始化顺序调用超类实现重写的规则伴生对象对象声明对象表达式对象表达式和对象声明之间的语义差异 定义 与Java一样,使用class关键... Kotlin类与继承、抽象类、嵌套类、内部类、匿名内部类、伴生对象、对象声明、对象表达式 定义属性主构造器次构造函数Kotlin 中没有 new 关键字抽象类内部类嵌套类匿名内部类类的修饰符继承重写方法重写属性派生类的初始化顺序调用超类实现重写的规则伴生对象对象声明对象表达式对象表达式和对象声明之间的语义差异 定义 与Java一样,使用class关键...
- 委托模式已经被证明是实现继承的一个很好的替代方案 : interface Base { fun print() } // 实现接口Base class BaseImpl(val x: Int) : Base { override fun print() { print(x) } } // 委托其他类来帮忙实现Base接口 class Derived(b: Bas... 委托模式已经被证明是实现继承的一个很好的替代方案 : interface Base { fun print() } // 实现接口Base class BaseImpl(val x: Int) : Base { override fun print() { print(x) } } // 委托其他类来帮忙实现Base接口 class Derived(b: Bas...
- 在Kotlin中, 定义单例将是一件十份简单的事。下面就是Kotlin下定义的单例: object DataProviderManager { fun registerDataProvider(provider: DataProvider) { // ... } val allDataProviders: Collection<DataProvider... 在Kotlin中, 定义单例将是一件十份简单的事。下面就是Kotlin下定义的单例: object DataProviderManager { fun registerDataProvider(provider: DataProvider) { // ... } val allDataProviders: Collection<DataProvider...
- 从事Android开发的童鞋都知道,自从去年的Google I/O大会上Kotlin被定为Android开发的官方语言以来,关于Kotlin就成为每个开发人员学习的目标,的确,Kotlin以它独有的魅力正在吸引这传统的Java程序开发人员。或许很多的童鞋已经对Kotlin进行了深入的学习,甚至已经运用到了自己的项目当中,但是还有较多同学可能只是听过Kotlin或简单了解过,本文将从宏观的角度... 从事Android开发的童鞋都知道,自从去年的Google I/O大会上Kotlin被定为Android开发的官方语言以来,关于Kotlin就成为每个开发人员学习的目标,的确,Kotlin以它独有的魅力正在吸引这传统的Java程序开发人员。或许很多的童鞋已经对Kotlin进行了深入的学习,甚至已经运用到了自己的项目当中,但是还有较多同学可能只是听过Kotlin或简单了解过,本文将从宏观的角度...
- 在Kotlin 1.1中,团队正式发布了JavaScript目标,允许开发者将Kotlin代码编译为JS并在浏览器中运行。在Kotlin 1.2中,团队增加了在JVM和JavaScript之间重用代码的可能性。现在,使用Kotlin编写的代码,可以在所有的应用程序中(包括后端,浏览器前端和Android移动应用程序)中重复使用。想要体验Kotlin1.2新功能的同学,可以下载官方提供的Int... 在Kotlin 1.1中,团队正式发布了JavaScript目标,允许开发者将Kotlin代码编译为JS并在浏览器中运行。在Kotlin 1.2中,团队增加了在JVM和JavaScript之间重用代码的可能性。现在,使用Kotlin编写的代码,可以在所有的应用程序中(包括后端,浏览器前端和Android移动应用程序)中重复使用。想要体验Kotlin1.2新功能的同学,可以下载官方提供的Int...
- 本文是 Gradle 官网文章 Kotlin Meets Gradle 的译文。 原文发布于 2016-05-18,所以文中的时间都要再往前算一年。 如今 Kotlin 已经发布了 1.1,Gradle 已经发布了 3.5,Gradle Script Kotlin 也已经发布了 0.9.1,相对当时都更完善了很多。很多读者会对 JetBrains 的优秀编程语言 Kotlin 比较熟悉。 自... 本文是 Gradle 官网文章 Kotlin Meets Gradle 的译文。 原文发布于 2016-05-18,所以文中的时间都要再往前算一年。 如今 Kotlin 已经发布了 1.1,Gradle 已经发布了 3.5,Gradle Script Kotlin 也已经发布了 0.9.1,相对当时都更完善了很多。很多读者会对 JetBrains 的优秀编程语言 Kotlin 比较熟悉。 自...
- Kotlin 自带了交互式编程命令行,即 REPL(Read-Eval-Print Loop 的简写,直译为 “读取-求值-输出”循环),尤其适合快速实验一些东西。 Kotlin 自带了交互式编程命令行,即 REPL(Read-Eval-Print Loop 的简写,直译为 “读取-求值-输出”循环),尤其适合快速实验一些东西。
上滑加载中
推荐直播
-
鸿蒙应用入门:轻松掌握ArkTS开发语言
2024/12/05 周四 16:00-18:00
Edi 华为云学堂技术讲师
本期直播课旨在让开发者了解ArkTS语法、轻松掌握ArkUI组件开发,带你零门槛入门鸿蒙开发,掌握状态管理实验和渲染控制实验。
即将直播 -
人工智能应用测试深度解析:理论基础与实践应用指南
2024/12/06 周五 14:30-16:30
Alex 华为云学堂技术讲师
本期直播主要结合理论及人工智能的相关实验,给大家讲述AI应用测试的主要流程和方法。帮助开发者了解AI应用测试的理论及方法,和AI应用测试在模型迭代调优过程中的作用。
去报名 -
2024 华为云开源开发者论坛 — 主论坛
2024/12/07 周六 09:00-12:00
华为及外部讲师团
2024年12月7日,首届华为云开源开发者论坛将于上海静安香格里拉酒店举行。论坛主题为“开放创新,释放云上数字生产力”,面向生态合作伙伴、企业、个人和高校开发者。论坛将围绕当前热门的开源话题,如“开源生态前景剖析”、“开源技术解读”、“开源开发者支持与实践”等进行分享和讨论,旨在帮助开发者利用开源链接鲲鹏、昇腾根生态和华为云生态,实现高效创新和价值裂变。
即将直播
热门标签