Что такое эквивалент статических конечных полей Java в Котлине?


в Java, чтобы объявить константу, вы делаете что-то вроде:

class Hello  {
 public static final int MAX_LEN = 20;
}

что такое эквивалент в Котлин?

3 61

3 ответа:

По Словам Котлина документация это эквивалентно:

class Hello {
    companion object {
        const val MAX_LEN = 20
    }
}

использование:

fun main(srgs: Array<String>) {
    println(Hello.MAX_LEN)
}

также это статическое конечное свойство (поле с геттером):

class Hello {
    companion object {
        @JvmStatic val MAX_LEN = 20
    }
}

и, наконец, это статическое последнее поле:

class Hello {
    companion object {
        @JvmField val MAX_LEN = 20
    }
}

если у вас есть реализация в Hello используйте companion object внутри класса

class Hello {
  companion object {
    val MAX_LEN = 1 + 1
  }

}

если Hello это чистый одноэлементный объект

object Hello {
  val MAX_LEN = 1 + 1
}

если свойства являются константами времени компиляции, добавьте const ключевое слово

object Hello {
  const val MAX_LEN = 20
}

если вы хотите использовать его в Java, добавить @JvmStatic аннотации

object Hello {
  @JvmStatic val MAX_LEN = 20
}

для меня

object Hello {
   const val MAX_LEN = 20
}

было очень шаблонно. Я просто поставил статические конечные поля над моим классом, как это

val MIN_LENGTH = 10

class MyService{
}