kotlin中匿名对象

open class MyClass {
    private fun too()=object {
        var x : String ="x"
    }
     fun publictoo()=object {
        var x : String ="x"
    }
    fun bar(){
        var  x1 =too().x
        //publictoo().x  // 编译错误,因为是public 方法返回类型是Any
    }
}

总结:匿名对象只能用在本地函数或者private声明中,如果将匿名对象用于public函数的返回值,或者public 属性的类型,那么kotlin编译器会将这些函数或者属性的返回类型重新定义 为匿名对象的父类型.如果匿名对象没有实现任何接口,没有从任何类继承,那么父类型就是Any,因此在匿名对象中的任何成员将无法访问!

posted on 2018-12-19 11:16  LoaderMan  阅读(1896)  评论(0编辑  收藏  举报

导航