本文概述
- 类参考
- 功能参考
- 重载的函数引用运算符(::)
- 物业参考
- 访问成员类的属性
类参考类引用用于获取KClass对象的引用。要获取静态Kclass的引用, 我们应该使用类文字(即, 使用双冒号)。
类引用的语法:
val c1 = String::classval c2 = MyClass::class
参考值是KClass的类类型。 KClass类引用与Java类引用不同。我们通过在KClass实例上使用.java属性来获取Java类引用。
注意:KClass代表一类并提供检查功能。要获取此类的实例, 请使用语法:: class。功能参考Kotlin功能用于使用双冒号获取功能参考。函数的引用可以在另一个函数中用作参数。要在另一个函数中使用此引用, 我们使用::运算符:
fun isPositive(x: Int) = x>
0
fun isPositive(x: Int) = x>
0val number = listOf(-10, -5, 0, 5, 10)print(number.filter(::isPositive))
Kotlin功能参考示例
fun main(args: Array<
String>
) {fun isPositive(x: Int) = x >
0val numbers = listOf(-10, -5, 0, 5, 10)println(numbers.filter(::isPositive)) }
输出:
[5, 10]
在上面的程序中, :: isPositive是函数类型(Int)-> 布尔值的值。
重载的函数引用运算符(::)当从上下文中知道期望的类型时, 可以将运算符::与过载函数一起使用。例如:
创建一个函数isPositive(), 它接受两种不同的Int和String类型, 并使用不同的类型参数调用此函数。
fun main(args: Array<
String>
) {fun isPositive(x: Int) = x >
0fun isPositive(s: String) = s== "kotlin" || s == "Kotlin"val numbers = listOf(-10, -5, 0, 5, 10)val strings = listOf("kotlin", "program")println(numbers.filter(::isPositive))println(strings.filter(::isPositive))}
输出:
[5, 10][kotlin]
物业参考我们还可以在Kotlin中将属性作为第一类对象进行访问, 要访问对象属性, 可以使用::运算符:
要评估类型KProperty < Int> 的属性对象, 我们使用表达式:: variableName。表达式:: variableName允许使用名称检索其属性名称, 并使用get()函数读取其值。
要重置可变类型属性的值, 引用属性具有set()方法。
fun main(args: Array<
String>
) {println(::x.get())println(::x.name)println(::y.set(10))}val x = 5var y = 5
输出:
5x10
访问成员类的属性属性引用还访问类的其他成员的属性。例如:
class A(val x: Int)fun main(args: Array<
String>
) {val prop = A::xprintln(prop.get(A(5)))}
输出:
5
推荐阅读
- Kotlin正则表达式模式
- Kotlin递归函数
- Kotlin运算符
- Kotlin Null安全类型
- Kotlin嵌套try-catch块
- Kotlin嵌套类和内部类
- Kotlin MutableSet接口
- Kotlin MutableMap接口
- Kotlin MutableList(mutableListOf())