Kotlin中如何用单个表达式定义并实例化匿名内部类单实例
Kotlin 命名空间合并实现方案
你要的合并逻辑可以直接通过Kotlin原生的匿名对象(object 表达式)实现,不需要显式声明inner class:在类内部定义的object表达式默认持有外部类的引用,天然具备内部类的全部能力,完全可以替代你之前「内部类定义+手动实例化」的两段式写法。
正确实现代码
class Uber { // 直接合并类定义和实例化,foo就是具备内部类特性的命名空间对象 val foo = object { fun insert() {} fun open() {} fun dispose() {} } val bar = object { fun insert() {} fun terminate() {} fun hop() {} } }
调用方式和原有实现完全一致,无感知
val uber = Uber() uber.foo.insert() uber.bar.hop()
补充说明
- 这种写法完全满足你所有函数归属在同一个Uber类下的要求,调用侧的使用体验和你原有实现没有任何差异
- 如果你有需要将命名空间对象作为参数传递到外部的场景,可以额外定义对应接口让匿名对象实现,即可解决匿名类型无法显式声明的问题
内容的提问来源于stack exchange,提问作者JohnnyLambada
相关产品推荐
相关产品推荐

