【发布时间】:2019-05-04 21:25:55
【问题描述】:
我想知道在 Kotlin 中创建全局常量的最佳方法是什么。在 Java 中,我们会使用一个包含常量的类,我们只需要导入这个类来访问所有常量。但在 Kotlin 中,有两种主要方式可以做到这一点:
-
您可以创建一个包含所有常量的对象:
对象常量{ const val CONST_1 = "foo" const val CONST_2 = "酒吧" const val CONST_3 = "toto" }
但这不是推荐的方式,正如其中一位语言开发人员所说: https://discuss.kotlinlang.org/t/best-practices-for-top-level-declarations/2198/3
- 第二种方法是使用顶级声明,在我看来这不是最好的方法,因为您拥有的常量越多,您的 IDE 将使用您的常量名称自动完成您的代码...而您必须一一导入每个常量才能使用它们。
我想知道是否有更好的解决方案。我不想让我的 IDE 充斥着数百个顶级声明、大量导入,但显然不推荐使用“对象”方式。
那我该怎么办?
感谢您的帮助
【问题讨论】:
-
您链接到的文章给出了答案:建议的做法是永远不要使用对象来创建命名空间,并且尽可能始终使用顶级声明。。如果你有大量的导入,这可能意味着你在一个文件中做的太多了。如果导入真的让您感到困扰,星号导入会有所帮助(但我从不输入它们,因为 IDE 会为我做这件事,所以我在这里并没有真正看到问题)。
-
正如 yole(在您链接的讨论中)所建议的那样,您可以使用包含顶级声明的单个文件创建一个包,例如
com.example.android.constants,然后您可以将这些常量导入为import com.example.android.constants.*而不是逐个。无论如何,我个人使用object声明。只是想指出有一种干净的方式(用单个文件打包)