Java Mutable vs Inmutable

Mutable vs Inmutable

Mutable vs Inmutable

Diferencia entre Java mutable vs Inmutable

Los objetos mutables tienen campos que se pueden modificar, los objetos inmutables no tienen campos que se puedan cambiar después de crear el objeto. Los objetos inmutables son objetos cuyo estado no puede cambiar después de haber sido creados. Mutable e inmutable son dos categorías de objetos en java. En este artículo, veremos las diferencias entre objetos mutables e inmutables en java. Además, veremos ejemplos de código java que muestran las diferencias entre la clase mutable y la inmutable en java.

Comparación cara a cara entre Java Mutable y Java Inmutable (Infografía)

A continuación se muestran las 6 principales diferencias entre Java Mutable y Java Inmutable:

Comience Su Curso de Desarrollo de Software Gratuito

Desarrollo web, lenguajes de programación, Pruebas de Software & otros

Información mutable vs inmutable

Información mutable vs Inmutable

Diferencias clave entre Java Mutable vs Inmutable

Las siguientes son diferencias clave entre objetos mutables e inmutables en Java:

  • Los objetos mutables son aquellos objetos en los que podemos hacer cambios en el estado de un objeto sin crear un nuevo objeto. Es decir, un objeto mutable se puede modificar después de su creación. En el caso de objetos inmutables, cada vez que se cambia el estado de un objeto, obtenemos un nuevo objeto. Al tratar con objetos inmutables, no se nos permite cambiar el estado de un objeto después de su creación.
  • Los objetos mutables en casos generales proporcionan métodos a través de los cuales se puede cambiar el contenido de los objetos, mientras que los objetos inmutables no proporcionan ningún método para cambiar su contenido.
  • En las clases java mutables, los métodos getter y setter están presentes, mientras que en las clases inmutables solo están disponibles los métodos getter y no los métodos setter.
  • Las clases mutables pueden o no ser seguras para subprocesos, mientras que las clases inmutables son seguras para subprocesos por defecto.
  • Ejemplos de clases mutables en java son java.útil.Date, StringBuffer, StringBuilder, etc. mientras que las clases legacy de java, las clases wrapper, las clases String son ejemplos de clases inmutables en java.

Tabla de Comparación de Java Mutable vs Inmutable

Analicemos la comparación principal entre Java Mutable vs Inmutable:

Mutable

Inmutable

El objeto Java Mutable se puede modificar después de su creación. El objeto inmutable de Java no se puede modificar después de su creación.
No se forma ningún objeto nuevo cuando se realizan cambios en un objeto existente. Cada vez que se cambia un objeto existente, se forma un nuevo objeto.
proporciona métodos para cambiar el contenido de un objeto. no proporciona métodos para cambiar el contenido de un objeto.
Los métodos Getter y setter están presentes en clases mutables. Solo están presentes los métodos getter y no los métodos setter.
Las clases mutables pueden o no ser seguras para subprocesos. Las clases inmutables son seguras para subprocesos de forma predeterminada.
Algunos ejemplos comunes de clases mutables en java son StringBuffer, StringBuilder y java.útil.Fecha. Todas las clases heredadas, clases de envoltura, clases de cadena son ejemplos comunes de clases inmutables en java.

Java Mutable e Inmutable con Ejemplos

Java Mutable e Inmutable con ejemplos se dan a continuación:

Ejemplo # 1 – Clase Mutable en Java

Ahora veremos ejemplos de código java que muestran la creación de clases mutables e inmutables en java.

Código:

package com.edubca.mutabledemo;
public class MutableDemo {
private String studentName;
private int rollNumber;
MutableDemo (String studentName, int rollNumber) {
this.studentName = studentName;
this.rollNumber = rollNumber;
}
public String getStudentName() {
return studentName;
}
// this setter can modify the name
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public int getRollNumber() {
return rollNumber;
}
// this setter can modify roll number
public void setRollNumber(int rollNumber) {
this.rollNumber = rollNumber;
}
public static void main(String args) {
MutableDemo obj = new MutableDemo ("John" , 100);
System.out.println("Original Name is " + obj.getStudentName());
System.out.println("Original Roll Number is " + obj.getRollNumber());
// update the name, and roll number as is mutable
obj.setStudentName("James");
obj.setRollNumber(102);
System.out.println("Modified Name is " + obj.getStudentName());
System.out.println("Modified Roll Number is " + obj.getRollNumber());
}
}

Salida:

Mutable vs Inmutable Java-1.1

Mutable vs Inmutable Java-1.1

El código anterior muestra la creación de una clase mutable en java con getters y setters.

Ejemplo # 2-Clase Inmutable en Java

Ahora veremos cómo podemos crear clases inmutables en Java.

Código:

package com.edubca.immutabledemo;
public final class ImmutableDemo {
final String studentName;
final int rollNumber;
public ImmutableDemo (String studentName, int rollNumber) {
this.studentName = studentName;
this.rollNumber = rollNumber;
}
public String getStudentName() {
return studentName;
}
public int getRollNumber() {
return rollNumber;
}
public static void main(String args) {
ImmutableDemo obj = new ImmutableDemo ("John" , 100);
// Since no getters are available contents cannot be modified.
// Also as variables are declared final they cannot be modified
System.out.println("Name is " + obj.getStudentName());
System.out.println("Roll Number is " + obj.getRollNumber());
}
}

Salida:

Mutable vs Inmutable Java-1.2

Mutable vs Inmutable Java-1.2

El código anterior muestra la creación de java inmutable de la clase. Los siguientes puntos deben tenerse en cuenta al crear una clase inmutable:

  • Una clase inmutable debe ser final, ya que no debe heredarse.
  • Todos los campos de una clase inmutable deben ser definitivos.
  • Si se utiliza cualquier objeto mutable como campo en una clase inmutable, se debe implementar un manejo especial para evitar que su contenido se modifique.
  • Un constructor público debe estar presente.
  • Se deben definir métodos Getter para todas las variables.
  • Los métodos de configuración no deben estar presentes para ninguna variable.

Conclusión

De la discusión anterior, tenemos una clara comprensión de las diferencias entre mutable e inmutable en java. Además, hemos visto ejemplos de Java que muestran cómo se crean clases mutables e inmutables. Es importante tener en cuenta que las clases inmutables son seguras para subprocesos por defecto, mientras que las clases mutables pueden o no ser seguras para subprocesos.

Artículos recomendados

Esta es una guía para Java Mutable vs Inmutable. Aquí también discutimos las diferencias de clave Java Mutables vs inmutables con infografías y tabla de comparación. También puede echar un vistazo a los siguientes artículos para obtener más información–

  1. Java BufferedReader
  2. StringBuffer Class en Java
  3. Java RuntimeException
  4. Java newInstance()
0 Acciones

Deja una respuesta

Tu dirección de correo electrónico no será publicada.