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
}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...
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} ...
和上面的get约定一样,[] 就是调用 get 方法的更简洁的方式,这里有个invoke约定,它的作用就是让对象像函数一样调用方法,下面直接来个例子: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 dataclassTestBean(val name:String,val age:Int){//重载定义invoke方法operator funinvoke():String{return"$name ...
该类需要包含 getValue() 方法和 setValue() 方法,且参数 thisRef 为进行委托的类的对象,prop 为进行委托的属性的对象。 importkotlin.reflect.KProperty// 定义包含属性委托的类classExample{varp:StringbyDelegate()}// 委托的类classDelegate{operatorfun getValue(thisRef:Any?,property:KProperty<*>):String{...
operator fun get(index: Int): T? { return items[index] } 1. 2. 3. 4. 5. 之后使用 soldier[0] 即可获取 items 可变参数中的实例对象 ; var soldier: Soldier<Weapon> = Soldier(AK47(), T72())
和上面的get约定一样,[] 就是调用 get 方法的更简洁的方式,这里有个invoke约定,它的作用就是让对象像函数一样调用方法,下面直接来个例子: data class TestBean(val name: String,val age: Int){ //重载定义invoke方法 operator fun invoke() : String{ ...
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位置上,可是你会发现,...
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)}") ...