在kotlin中,也有类似的功能,但不是匿名类,而是对象,需要使用object关键字,对象要继承的列需要与object之间的冒号(:)分隔.
fun main(arg: Array<String>) { process(MyClass("bill"))//输出verify process(object : MyClass("bill") { override fun verify() { super.verify()//输出verify println("object verify")//输出object verify } }) } open class MyClass(name: String) { open var name = name open fun verify() { println("verify") } } fun process(obj: MyClass) { obj.verify() }
对象和类一样,只能有一个父类,但可以实现多个接口
fun main(arg: Array<String>) { process(MyClass("bill"))//输出verify process(object : MyClass("bill"),myInterface { override fun verify() { super.verify()//输出verify println("object verify")//输出object verify } }) } open class MyClass(name: String) { open var name = name open fun verify() { println("verify") } } fun process(obj: MyClass) { obj.verify() if(obj is myInterface){ obj.closeData()//输出closeData } } interface myInterface{ fun closeData(){ print("closeData")//输出closeData } }
如果只想建立一个对象,不想任何的类型,也不实现任何的接口,如下:
fun too() { val adc = object { var x: Int = 1 } print(adc.x) }