什么时候应该首选顶级const和伴侣对象const?

时间:2020-04-07 15:27:49

标签: android kotlin

我想知道何时应使用顶级const,何时应使用随播对象?如果财产是私人或公共财产,我应该考虑使用什么?

const val URI = "sdfsdfsdf"

或者我应该使用:

companion object {
    const val URI = "sdfsdfsdf"
}

,当我们处理可见性时使用什么重要?

1 个答案:

答案 0 :(得分:1)

According to JetBrains

建议的做法是从不使用对象创建名称空间,并在可能的情况下始终使用顶级声明。我们尚未发现名称冲突是一个问题,如果确实发生冲突,则可以使用带有别名的导入来解决。

因此,您对第一个问题的答案是

何时我应该使用顶级const [...]?

总是

但是,这是一项建议,最终由您决定如何组织代码以及如何使用IDE中的代码完成功能。有时,最好不要为了自动完成而污染全局名称空间。由于已经通过许多线程(例如herehere)广泛讨论了这个问题/问题,我会说这很大程度上取决于个人的喜好,因此我将其保留在这里。

但是,如果您想了解幕后情况,那么从字节码的角度来看,两种方法之间存在细微的差异。顶级或(伴侣)对象常量最终都作为某些类的静态成员,但是对象方法还额外创建了一个静态INSTANCE字段,用于保存对象的引用。在内存方面,这应该不会有太大的区别,但是意识到这一点是很好的。

相关问题