Nous écrivons toujours:
public static final int A = 0;
Question:
static final
est le seul moyen de déclarer une constante dans une classe?public final int A = 0;
, A
est-il toujours un constant ou juste un champ d'instance?enum
dans Java 5 et versions ultérieures aux fins que vous avez décrites. C'est type sécuritaire.Si vous parlez de la différence entre variable d'instance et variable de classe, il existe une variable d'instance par objet créé. Alors que la variable de classe n’a qu’une copie par chargeur de classe, quel que soit le nombre d’objets créés.
Java 5 et supérieur enum
type
public enum Color{
RED("Red"), GREEN("Green");
private Color(String color){
this.color = color;
}
private String color;
public String getColor(){
return this.color;
}
public String toString(){
return this.color;
}
}
Si vous souhaitez modifier la valeur de l'énum que vous avez créé, fournissez une méthode de mutation.
public enum Color{
RED("Red"), GREEN("Green");
private Color(String color){
this.color = color;
}
private String color;
public String getColor(){
return this.color;
}
public void setColor(String color){
this.color = color;
}
public String toString(){
return this.color;
}
}
Exemple d'accès:
public static void main(String args[]){
System.out.println(Color.RED.getColor());
// or
System.out.println(Color.GREEN);
}
final
signifie que la valeur ne peut pas être modifiée après l'initialisation, c'est ce qui en fait une constante. static
signifie qu'au lieu d'avoir un espace alloué pour le champ dans chaque objet, une seule instance est créée pour la classe.
Ainsi, static final
signifie qu'une seule instance de la variable, quel que soit le nombre d'objets créés et que la valeur de cette variable ne puisse jamais changer.
Tout ce qui est static
est dans le niveau de la classe. Il n'est pas nécessaire de créer une instance pour accéder aux champs/méthodes statiques. La variable statique sera créée une fois lorsque la classe est chargée. Les variables d'instance sont la variable associée à l'objet. Ce qui signifie que des variables d'instance sont créées pour chaque objet que vous créez. Tous les objets auront une copie séparée de la variable d'instance pour eux-mêmes. Dans votre cas, lorsque vous l'avez déclaré en tant que static final
, il ne s'agit que d'une copie de la variable. Si vous le modifiez à partir de plusieurs instances, la même variable sera mise à jour (cependant, vous avez la variable final
afin qu’elle ne puisse pas être mise à jour). Dans le second cas, le final int a
est également constant, mais il est créé chaque fois que vous créez une instance de la classe où cette variable est déclarée.
Consultez ce tutoriel Java pour une meilleure compréhension,