Kotlin 扩展函数2024 年 8 月 29 日 | 阅读 3 分钟 Kotlin **扩展函数** 提供了一种机制来**"添加"**方法到类,而无需继承该类或使用任何类型的设计模式。 创建的扩展函数在该类中用作常规函数。 扩展函数使用带方法名称的前缀 *接收者类型* 声明。 在上面的声明中,<class_name> 是接收者类型,而 <method_name>() 是扩展函数。 扩展函数声明及其用法的示例通常,我们从类外部调用类内部已定义的所有方法。在下面的示例中,Student 类声明了一个方法 *Passed()*,该方法通过创建 Student 类的 student 对象从 *main()* 函数调用。 假设我们要调用 Student 类的一个方法(比如 *isExcellent()*),但该方法未在类中定义。 在这种情况下,我们在 Student 类外部创建一个函数 (isExcellent()) 作为 Student.isExcellent(),并从 main() 函数调用它。 声明的 Student.isExcellent() 函数被称为 **扩展函数**,其中 Student 类被称为 *接收者类型*。 输出 student passing status is true student excellent status is true 上面的例子只演示了如何声明一个扩展函数。 Kotlin 扩展函数示例让我们看一个扩展函数的实际例子。 在此示例中,我们使用 swap() 方法交换 MutableList<> 的元素。 但是,MutableList<> 类内部不提供 swap() 方法来交换它的元素。 为了做到这一点,我们为 MutableList<> 创建一个带有 swap() 函数的扩展函数。 list 对象使用 list.swap(0,2) 函数调用调用扩展函数 (MutableList<Int>.swap(index1: Int, index2: Int):MutableList<Int>)。 swap(0,2) 函数将列表的索引值传递给 MutableList<Int>.swap(index1: Int, index2: Int):MutableList<Int>) sxtension 函数。 输出 before swapping the list :[5, 10, 15] after swapping the list :[15, 10, 5] 可空接收者的扩展函数扩展函数可以定义为可空接收者类型。 即使对象值为 null,也可以通过对象变量调用此可空扩展函数。 使用主体内的 **this == null** 检查对象的 nullability。 让我们使用可空接收者的扩展函数重写上面的程序。 输出 before swapping the list :[5, 10, 15] after swapping the list :[15, 10, 5] 伴生对象扩展**伴生** 对象是在类中声明并用 **伴生** 关键字标记的对象。 伴生对象用于直接使用类名调用类的成员函数(就像 java 中的 static 一样)。 包含伴生对象的类也可以定义为伴生对象的扩展函数和属性。 伴生对象示例在此示例中,我们调用使用类名 (MyClass) 作为限定符在伴生对象中声明的 create() 函数。 输出 calls create method of companion object 伴生对象扩展示例让我们看一个伴生对象扩展的例子。 伴生对象扩展也使用 *类名* 作为限定符来调用。 输出 executing extension of companion object 下一个主题Kotlin 泛型 |
我们请求您订阅我们的新闻通讯以获取最新更新。