}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...
val y: Int) { // 定义一个名为 plus 的方法 operator fu
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...
operator funget(index:Int):T?{returnitems[index]}funfight(){for(iteminitems){item.fire()}}}openclassWeapon(varname:String){open funfire(){println("weapon fire !")}}classAK47:Weapon("AK47"){override funfire(){super.fire()println("AK47 fire fire !")}}classT72:Weapon("T72"){over...
1fun equals(other: Any?): Boolean 激活(invoking)函数 例子 假设你有公司数据模型,每位雇员的列表。 你可以使用get操作符访问方括号中位置。这种实现非常容易: 1classEmployee(val id: Long, val name: String)23classCompany(privateval employees: List) {4operator fun get(pos: Int) =employees[pos]5} ...
该类需要包含 getValue() 方法和 setValue() 方法,且参数 thisRef 为进行委托的类的对象,prop 为进行委托的属性的对象。 importkotlin.reflect.KProperty// 定义包含属性委托的类classExample{varp:StringbyDelegate()}// 委托的类classDelegate{operatorfun getValue(thisRef:Any?,property:KProperty<*>):String{...
operatorfunPoint.plus(other:Point):Point{returnPoint(x+other.x,y+other.y)} Kotlin限定了你能重载哪些运算符,以及你需要在你的类中定义对应名字的函数,如下: a * btimesa / b div a % b mod a + b plus a - b minus 定义运算符的时候也可以不要求两个运算数是相同的类型。
operator fun LocalDate.inc(): LocalDate = LocalDate.now().plusDays(1) 1. 然后我们获取一天后的日期可以这样去写 var today = LocalDate.now() println("今天的日期是${today.format(DateTimeFormatter.ISO_DATE)}") println("明天的日期是${(++today).format(DateTimeFormatter.ISO_DATE)}") ...
operator fun get(index: Int): T? { return items[index] } 1. 2. 3. 4. 5. 之后使用 soldier[0] 即可获取 items 可变参数中的实例对象 ; var soldier: Soldier<Weapon> = Soldier(AK47(), T72())
override fun contains(element: @UnsafeVariance E): Boolean override fun iterator(): Iterator<E> public operator fun get(index: Int): E } List在泛型E的前面加上了out关键字,说明List在泛型E上是协变的。不过这里还有一点需要说 明,原则上在声明了协变之后,泛型E就只能出现在out位置上,可是你会发现,...