抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

除了集合之外,Kotlin 标准库还包含另一种类型 - 序列 (Sequence<T>)。 与集合不同,序列不包含元素,它们在迭代时生成元素。序列提供与 Iterable 相同的功能,但实现了另一种多步骤收集处理方法。 当 Iterable 的处理包括多个步骤时,它们会急切地执行:每个处理步骤完成并返回其结果 - 一个中间集合。 在此集合上执行后面的步骤。反过来,序列的多步处理会...

委托委托模式已被证明是实现继承的一个很好的替代方案,并且 Kotlin 本身就支持它,需要零样板代码。 Derived 类可以通过将其所有公共成员委托给指定对象来实现接口 Base: 1234567891011121314interface Base { fun print()}class BaseImpl(val x: Int) : Base { ...

类引用最基本的反射功能是获取对 Kotlin 类的运行时引用。 要获取对静态已知的 Kotlin 类的引用,可以使用类字面量语法: 1val c = MyClass::class 该引用是 KClass 类型值。 Kotlin 类引用与 Java 类引用不同。 要获取 Java 类引用,请在 KClass 实例上使用 .java 属性。 绑定类引用可以通过将对象用作接收者来获取对具有相同 :...

参数重写方法总是使用基本方法的默认参数值。 重写具有默认参数值的方法时,必须从签名中省略默认参数值。 如果有默认值的参数在没有默认值的参数之前,则只能通过使用命名参数调用函数来使用默认值: 123456fun foo( bar: Int = 0, baz: Int,) { /*...*/ }foo(baz = 1) // The default value b...

条件和循环if 表达式在 Kotlin 中,if 是一个表达式:它返回一个值。 因此,没有三元运算符(条件?那么:else),因为普通的 if 在这个角色中可以正常工作。 if 表达式的分支可以是块。 在这种情况下,最后一个表达式是块的值。 如果使用 if 作为表达式,例如,返回其值或将其分配给变量,则 else 分支是强制性的。 when 表达式when 定义具有多个分支的条件表达式。 它...

数字Kotlin 提供了一组内建类型来表示数字。 整型类型对于整型数字,有四种类型,它们有不同的大小和取值范围: Byte 8bits -128~127 Short 16bits -32768~32767 Int 32bits Long 64bits 当初始化一个没有明确制定类型的变量时,编译器会自动推断具有足以表示该值的最小范围的类型。如果不超过 Int 的范围,则类型为 ...

在 Java 中,子类的构造方法实现中必须调用父类的构造方法。有以下规则: 如果父类有无参构造方法,则子类构造方法会隐式调用父类的无参构造方法 如果父类没有无参构造方法,则子类构造方法必须显式调用父类构造方法或子类其他构造方法(来间接调用父类构造方法) 对其他构造方法的调用必须放在方法体的第一行 在 Kotlin 中,如果一个类存在主构造器,则每个次构造器都要直接或间接委托给主构造器。 ...

原文 前言Kotlin 只在标准库中提供了最低级别的API以使各种其他库能够利用协程。在 kotlin 中,async 和 await 不是关键字,而且甚至不是标准库的一部分。此外,与 futures and promises 相比,Kotlin 的挂起函数概念为异步操作提供了更安全且不易出错的抽象。 kotlinx.coroutines 是由 JetBrains 开发的丰富的协程库。 它包...

原文 Kotlin 中的类可以有类型参数,就像在 Java 中一样: 123class Box<T>(t: T) { var value = t} 要创建此类的实例,只需提供类型参数: 1val box: Box<Int> = Box<Int>(1) 但是如果参数可以推断出来,例如,从构造函数参数,可以省略类型参数: 1val b...

Kotlin 允许为类型上预定义的一组运算符提供自定义实现。这些运算符具有预定义的符号表示(如 + 或 *)和优先级。要实现运算符,请为相应类型提供具有特定名称的成员函数或扩展函数。这种类型成为二元运算的左侧类型和一元运算的参数类型。 要重载运算符,请使用运算符修饰符标记相应的函数: 123interface IndexedContainer { operator fun g...