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,因此在匿名对象中的任何成员将无法访问!