170 votes

Quel est l'équivalent des champs statiques finaux Java dans Kotlin?

En Java, pour déclarer une constante, vous faites quelque chose comme:

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

Quel est l'équivalent à Kotlin?

269voto

IRus Points 6031

Selon la documentation Kotlin , cela équivaut à:

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

Usage:

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

Aussi, c'est la propriété finale statique (champ avec getter):

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

Et enfin c'est le champ final statique:

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

42voto

Gary LO Points 478

si vous avez une implémentation en Hello, utilisez companion object à l'intérieur d'une classe

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

}

si Hello est un pur objet singleton

object Hello {
  val MAX_LEN = 1 + 1
}

si les propriétés sont des constantes de compilation, ajouter un const mot-clé

object Hello {
  const val MAX_LEN = 20
}

si vous voulez l'utiliser en Java, ajoutez - @JvmStatic d'annotation

object Hello {
  @JvmStatic val MAX_LEN = 20
}

13voto

Simon Ludwig Points 665

Pour moi

 object Hello {
   const val MAX_LEN = 20
}
 

était trop chaud. Je mets simplement les champs finaux statiques au dessus de ma classe comme ceci

 val MIN_LENGTH = 10

class MyService{
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X