operator fun getValue(thisRef: Any?, property: KProperty<*>): String { return "$thisRef, 这里委托了 ${property.name} 属性" } operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) { println("$this
fun main() { var stu = Student("Mary") println(stu[1]) // 打印: a stu[1] = 'W' println(stu.name) // 打印: MWry } class Student(var name: String) { operator fun get(i: Int): Char { return name[i] } operator fun set(i: Int, c: Char): Unit { name = na...
}classDelegate {operatorfun getValue(thisRef: Any?, property: KProperty<*>): String {//获取属性值的实际实现return"Delegated value"}operatorfun setValue(thisRef: Any?, property: KProperty<*>, value: String) {//设置属性值的实际实现println("Setting value to: $value") } } 在上面的代码中,E...
该类需要包含 getValue() 方法和 setValue() 方法,且参数 thisRef 为进行委托的类的对象,prop 为进行委托的属性的对象。 importkotlin.reflect.KProperty// 定义包含属性委托的类classExample{varp: StringbyDelegate() }// 委托的类classDelegate{operatorfungetValue(thisRef:Any?, property:KProperty<*>): Stri...
{property.name} 属性"}operatorfun setValue(thisRef:Any?,property:KProperty<*>,value:String){println("$thisRef 的 ${property.name} 属性赋值为 $value")}}fun main(args:Array<String>){val e=Example()println(e.p)// 访问该属性,调用 getValue() 函数e.p="Runoob"// 调用 setValue() 函数...
fun retainAll(elements: Collection<E>): Boolean override fun clear(): Unit public operator fun set(index: Int, element: E): E public fun add(index: Int, element: E): Unit public fun removeAt(index: Int): E override fun listIterator(): MutableListIterator<E> override fun listIterator(...
importkotlin.reflect.KPropertyclassCustomDelegate{privatevarvalue:String=""operator fungetValue(thisRef:Any?,property:KProperty<*>):String{println("Getting value: $value")returnvalue}operator funsetValue(thisRef:Any?,property:KProperty<*>,newValue:String){println("Setting value: $newValue")value=new...
public fun addAll(index: Int, elements: Collection<E>): Boolean override fun removeAll(elements: Collection<E>): Boolean override fun retainAll(elements: Collection<E>): Boolean override fun clear(): Unit public operator fun set(index: Int, element: E): E ...
我们还是以上面的Teacher为例 classTeacher(name: String)//扩展给Teacher加上重载运算符operatorfunTeacher.times(n:Int): List<Teacher> {vallist = arrayListOf<Teacher>() repeat(n) {valtemp = copyBean(this) list.add(temp) }returnlist }
通常我们使用var来定义属性以及它的初始化值,并且提供set/get方法以供外部使用。但是通过委托,可以将属性的set/get委托给其他的对象来完成。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 classProduct{varx:String byStringDelegate()}classStringDelegate{operator fungetValue(product:Product,property:KProperty...