美文网首页R7的kotlin
kotlin学习笔记之 object

kotlin学习笔记之 object

作者: R7_Perfect | 来源:发表于2019-09-29 10:35 被阅读0次

object使用场景

1.单例

object RepositoryManager{
    fun method(){
        println("I'm in object declaration")
    }
}

fun main(args: Array<String>) {
    RepositoryManager.method()
}

编译成的java代码:

class RepositoryManager{
    private RepositoryManager(){}
    public static final RepositoryManager INSTANCE = new RepositoryManager();
}

public static void main(String[] args) {
        RepositoryManager.INSTANCE.method();
}

2.静态访问

由于kotlin中没有static关键字,没有静态对象,取而代之的是:
包级别函数(package-level function)和伴生对象

class ObjectTest {
    companion object MyObject{
        val a = 20
        fun method() {
            println("I'm in companion object")
        }
    }
}
fun main(args: Array<String>) {
    //方式一
    ObjectTest.MyObject.method()
    println(ObjectTest.MyObject.a)
 
    //方式二(推荐方式)
    ObjectTest.method()
    println(ObjectTest.a)
}

MyObject是以静态内部类存在的

3.扩展访问局限性
Java中,如果定义了接口,调用这不能超出接口中定义的方法
在kotlin中使用对象可以实现:


interface AA {
    fun a()
}
 
fun main(args: Array<String>) {
 
    val aa = object : AA {
        override fun a() {
            println("a invoked")
        }
        fun b() {
            println("b invoked")
        }
    }
 
    aa.a()
    aa.b() //is ok

相关文章

网友评论

    本文标题:kotlin学习笔记之 object

    本文链接:https://www.haomeiwen.com/subject/pcpructx.html