- 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 的简写,直译为 “读取-求值-输出”循环),尤其适合快速实验一些东西。
上滑加载中
推荐直播
-
鸿蒙应用实战:带你掌握UIAbility使用
2024/12/12 周四 16:00-18:00
Cindy 华为云学堂技术讲师
本期直播带你了解Stage应用模型和UIAbility应用组件的核心概念、掌握在Stage模型下,使用UIAbility组件进行应用开发的基本流程,直播中会讲解场景化的代码示例,助力开发者深度理解开发内容。
回顾中 -
基于ArkTS卡片开发的鸿蒙应用趣味案例
2024/12/13 周五 16:00-18:00
Skye 华为云学堂技术讲师
服务卡片是HarmonyOS应用开发的一大重要亮点。如何创建ArkTS服务卡片,以及如何运用卡片事件的能力呢?本期直播我们将深入剖析其理论要点,并结合实验案例,带大家一起深入体验HarmonyOS服务卡片的开发过程。
去报名 -
OpenSpeech
2024/12/14 周六 10:30-15:30
华为讲师团
我们希望能够更接地气、更懂开发者,展示开发者不一样的多维面。不管是中国还是海外,学生还是企业, 每一个开发者的故事都值得被聆听。
即将直播
热门标签