gpt4 book ai didi

android - Kotlin:const val 与 val

转载 作者:IT老高 更新时间:2023-10-28 13:28:05 46 4
gpt4 key购买 nike

我理解在 Kotlin 中 const val 用于声明常量,而 val 用于只读属性。但是,我想知道在以下情况下,哪个更适合使用。

假设我有一个 fragment 需要一个用于 saveInstanceStaterestoreInstanceState 的 key 。我想知道以下 2 个选项中哪一个更好:

选项 1:

class MyFragment {
private val MY_KEY = "my_key"
...
}

选项 2:

private const val MY_KEY = "my_key" // declared in the same file.

class MyFragment {
...
}

我更喜欢#option 2,因为它清楚地表明 MY_KEY 是一个常量,并且值是在编译时确定的。但是,由于它是在顶层声明的,因此需要在编译的 java 代码中创建一个类,即 MyFragmentKt(假设文件名为 MyFragment.kt)。在#option 1 中,不会生成额外的类,虽然 MY_KEY 的值将在运行时分配而不是常量,但在这种特定情况下它的使用方式没有区别。

因此,虽然我个人更喜欢#option 2,但我的分析让我认为#option 1 即使不是更好,也不会更糟。我只是想知道其他开发人员如何看待这一点,以及#option 2 是否还有其他我没有想到的好处。谢谢。

最佳答案

每次编写(非内联)lambda 表达式时,您就创建了另一个类。与此相比,创建一个单独的类来保存顶级声明似乎微不足道。

此外,如果您在顶层拥有的只是一个常量声明,它将被内联到每个使用站点(按规范),因此拥有的类本身将变得未被引用,因此可以通过 ProGuard 的最小化来定位。它很可能不会出现在您的正式版 APK 中。

关于android - Kotlin:const val 与 val,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48661282/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com