网站建设进度以及具体内容,ucenter wordpress,怎么做网站 先简单的聊一下,调用wordpress栏目列表导读大纲 1.1.1 扩展属性的创建和使用 1.1.1 扩展属性的创建和使用 之前, 我们已经了解声明 Kotlin 属性的语法 Kotlin中的顶级属性–传送门就像扩展函数一样,我们也可以指定扩展属性就像之前所说#xff0c;属性和函数的区别在于前者是特征#xff0c;后者是行为 相比扩展函… 导读大纲 1.1.1 扩展属性的创建和使用 1.1.1 扩展属性的创建和使用 之前, 我们已经了解声明 Kotlin 属性的语法 Kotlin中的顶级属性–传送门就像扩展函数一样,我们也可以指定扩展属性就像之前所说属性和函数的区别在于前者是特征后者是行为 相比扩展函数扩展属性无非就是使用属性访问语法来访问扩展功能 在上一节中,我们定义扩展函数 lastChar() 扩展函数 lastChar()–传送门1 让我们把它转换成一个属性,这样就可以调用 “myText”.lastChar与函数一样,扩展属性看起来就像添加接收器类型的普通属性 必须始终定义getter,因为没有后备字段 扩展属性就是通过自定义 getter 访问器来实现对已有类的功能扩展 由于这里的实现比较简单, 所以使用表达式体的形式定义get()
val String.lastChar: Char // 1get() get(length - 1)
fun main() {println(Kotlin.lastChar) // 1
}如果在 StringBuilder 上定义 lastChar 属性 1 可以将其作为 var, 因为 StringBuilder 的内容可以被修改2 访问扩展属性与访问成员属性完全相同3 这里直接通过赋值来调用扩展属性的setter访问器 setter访问器内部可以调用接收器对象的任意方法比如这里的setCharAt
var StringBuilder.lastChar: Char // 1get() this.get(length - 1)set(value) { // 1this.setCharAt(length - 1, value) // 3}
fun main() {println(Kotlin.lastChar)val sb StringBuilder(Kotlin?) // 2println(sb.lastChar) // 2// ?sb.lastChar ! // 3println(sb)// Kotlin!
}请注意,当需要从 Java 访问扩展属性时,必须明确调用其getter和setter 1 在Java中遵照 Java 的属性调用惯例来调用xxx.getLastChar(sb) 从这里看出扩展属性的本质还是静态性的底层其实还是挂载在 StringFunctions 类下静态方法 StringFunctions是通过注解JvmName来指定的, 这里不再赘述
import strings.StringFunctions;
public class Example {public static void main(String[] args){StringBuilder sb new StringBuilder(Kotlin?);System.out.println(StringFunctions.getLastChar(sb)); // 1StringFunctions.setLastChar(sb,!); // 1System.out.println(sb);}
}