105 votes

Différence entre Mutable objets et des objets Immuables

Toute une, merci de donner la diff entre Mutable objets et des objets Immuables exemple.

129voto

Ralph Points 42744

Mutable objets ont des champs qui peuvent être modifiées, des objets immuables ont pas de champs qui peuvent être modifiées après la création de l'objet.

Très simple, immuable objet est un objet sans n'importe quel domaine. (Par exemple, un simple Comparateur de mise en Œuvre).

class Mutable{
  private int value;

  public Mutable(int value) {
     this.value = value;
  }

  getter and setter for value
}

class Immutable {
  private final int value;

  public Immutable(int value) {
     this.value = value;
  }

  only getter
}

69voto

Mike Points 6184

Mutable objets peuvent avoir leurs champs changé après la construction. Des objets immuables ne peut pas.

public class MutableClass {

 private int value;

 public MutableClass(int aValue) {
  value = aValue;
 }

 public void setValue(int aValue) {
  value = aValue;
 }

 public getValue() {
  return value;
 }

}

public class ImmutableClass {

 private final int value;

 public MutableClass(final int aValue) {
  //The value is set. Now, and forever.
  value = aValue;
 }

 public final getValue() {
  return value;
 }

}

23voto

Jigar Joshi Points 116533

Immuable de l'Objet de l'état ne peut pas être modifié.

par exemple String.

String str= "abc";//a object of string is created
str  = str + "def";// a new object of string is created and assigned to str

14voto

LLS Points 710

Ils ne sont pas différents du point de vue de la JVM. Des objets immuables n'ont pas de méthodes qui peuvent modifier les variables d'instance. Et les variables d'instance sont privés; par conséquent, vous ne pouvez pas le modifier après l'avoir créé. Un exemple célèbre serait Chaîne. Vous n'avez pas de méthodes comme setString, ou setCharAt. Et s1 = s1 + "w" va créer une nouvelle chaîne, avec l'original abandonné. C'est ma compréhension.

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