Por favor, cualquiera dé la diferencia entre objetos mutables y objetos inmutables con el ejemplo.Diferencia entre objetos mutables e inmutables
Respuesta
Los objetos mutables pueden tener sus campos cambiados después de la construcción. Los objetos inmutables no pueden.
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;
// changed the constructor to say Immutable instead of mutable
public ImmutableClass (final int aValue) {
//The value is set. Now, and forever.
value = aValue;
}
public final getValue() {
return value;
}
}
+1 como respondiste antes @Ralph y más explícitamente – KNU
Immutable El estado del objeto no se puede modificar.
por ejemplo String
.
String str= "abc";//a object of string is created
str = str + "def";// a new object of string is created and assigned to str
objetos mutables tienen campos que se pueden cambiar, objetos inmutables no tienen campos que se pueden cambiar después de crear el objeto.
Un objeto inmutable muy simple es un objeto sin ningún campo. (Por ejemplo, una implementación simple de Comparador).
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
}
No son diferentes desde el punto de vista de JVM. Los objetos inmutables no tienen métodos que puedan cambiar las variables de instancia. Y las variables de instancia son privadas; por lo tanto, no puede cambiarlo después de crearlo. Un ejemplo famoso sería String. No tiene métodos como setString o setCharAt. Y s1 = s1 + "w" creará una nueva cadena, con la original abandonada. Eso es lo que entiendo.
Los objetos inmutables son simplemente objetos cuyo estado (los datos del objeto) no pueden cambiar después de la construcción. Los ejemplos de objetos inmutables del JDK incluyen String e Integer.
Por ejemplo: (Point es mutable y cadena inmutable)
Point myPoint = new Point(0, 0);
System.out.println(myPoint);
myPoint.setLocation(1.0, 0.0);
System.out.println(myPoint);
String myString = new String("old String");
System.out.println(myString);
myString.replaceAll("old", "new");
System.out.println(myString);
La salida es:
java.awt.Point[0.0, 0.0]
java.awt.Point[1.0, 0.0]
old String
old String
Buena versión de Java efectiva. – maffo
Esto es lo que estoy buscando ... THanks – HybrisFreelance
myString.replaceAll ("viejo", "nuevo"); - Este código debe ser así myString = myString.replaceAll ("viejo", "nuevo"); - Creo que lo has usado de manera incorrecta. – Tugrul
- 1. Scala: Contiene en conjuntos mutables e inmutables
- 2. Bloquear objetos mutables como inmutables en python
- 3. ¿Qué tipos son mutables e inmutables en Google Go Language?
- 4. Gráfico de tipos mutables frente a inmutables
- 5. Uso correcto de listas mutables/inmutables
- 6. objetos mutables y hashCode
- 7. ¿Cuál es el mejor enfoque para convertir objetos inmutables en objetos mutables (recursivos)?
- 8. ¿Por qué los ListMaps mutables e inmutables tienen diferentes pedidos en Scala?
- 9. Creación de objetos emparejados inmutables
- 10. ¿Qué son los objetos inmutables?
- 11. Serialización y objetos inmutables
- 12. Los objetos inmutables .net
- 13. Diferencia entre initWithNibName e initWithCoder
- 14. diferencia entre SDK e IDE
- 15. Creación de objetos inmutables utilizandoJAXB
- 16. deshacer/rehacer con objetos inmutables
- 17. ¿Reutilizar objetos existentes para objetos inmutables?
- 18. Micro-punto de referencia que compara las colecciones mutables e inmutables de Scala con las colecciones java.util.concurrent. *
- 19. Colecciones de Java con objetos mutables
- 20. Los objetos inmutables con inicializadores de objeto
- 21. ¿Hay alguna diferencia entre RPC e IPC?
- 22. Diferencia entre default-initialize e value-initialize?
- 23. ¿La diferencia entre sys.stdout.write e print?
- 24. diferencia entre puntos numpy() e interior()
- 25. Diferencia entre devoluciones e impresión en python?
- 26. ¿Diferencia entre paquete e instalación de gema?
- 27. Diferencia entre EXISTS e IN en SQL?
- 28. Diferencia entre var_dump, var_export e print_r
- 29. ¿Diferencia entre nueva e inicialización en Smalltalk?
- 30. ¿Diferencia entre servicio e hilo en Android?
clase 'string' es un gran ejemplo de un objeto inmutable. – Qwerky
Ver también [Objetos mutables frente a objetos inmutables] (http://stackoverflow.com/questions/214714/mutable-vs-immutable-objects) (no específicos de Java) –
Por cierto, eche un vistazo a ['com.jcabi.aspects .Immutable'] (http://www.jcabi.com/jcabi-aspects/annotation-immutable.html) anotación – yegor256