首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Kotlin中,Java static final字段的等价物是什么?

在Kotlin中,Java static final字段的等价物是什么?
EN

Stack Overflow用户
提问于 2016-11-01 09:20:56
回答 3查看 70.2K关注 0票数 157

在Java中,要声明一个常量,您可以这样做:

代码语言:javascript
复制
class Hello {
    public static final int MAX_LEN = 20;
}

Kotlin中的等价物是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-01 13:26:47

根据Kotlin documentation的说法,这是等价的:

代码语言:javascript
复制
class Hello {
    companion object {
        const val MAX_LEN = 20
    }
}

用法:

代码语言:javascript
复制
fun main(srgs: Array<String>) {
    println(Hello.MAX_LEN)
}

这也是静态的final属性(带有getter的字段):

代码语言:javascript
复制
class Hello {
    companion object {
        @JvmStatic val MAX_LEN = 20
    }
}

最后,这是静态的final字段:

代码语言:javascript
复制
class Hello {
    companion object {
        @JvmField val MAX_LEN = 20
    }
}
票数 245
EN

Stack Overflow用户

发布于 2016-11-01 13:27:54

如果在Hello中有实现,请在类中使用companion object

代码语言:javascript
复制
class Hello {
  companion object {
    val MAX_LEN = 1 + 1
  }

}

如果Hello是一个纯单例对象

代码语言:javascript
复制
object Hello {
  val MAX_LEN = 1 + 1
}

如果属性是编译时常量,则添加const关键字

代码语言:javascript
复制
object Hello {
  const val MAX_LEN = 20
}

如果您想在Java中使用它,可以添加@JvmStatic注释

代码语言:javascript
复制
object Hello {
  @JvmStatic val MAX_LEN = 20
}
票数 42
EN

Stack Overflow用户

发布于 2018-01-05 00:45:58

对我来说

代码语言:javascript
复制
object Hello {
   const val MAX_LEN = 20
}

太过陈词滥调了。我简单地将静态的final字段放在我的类上面,如下所示

代码语言:javascript
复制
private val MIN_LENGTH = 10 // <-- The `private` scopes this variable to this file. Any class in the file has access to it.

class MyService{
}
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40352879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档