logo

Mutable e inmutable en Java

Java es un lenguaje de programación orientado a objetos. Como es un lenguaje de programación orientado a objetos, todos sus métodos y mecanismos giran en torno a los objetos. Un concepto basado en objetos es mutable y inmutable en Java . Los objetos en Java son mutables o inmutables; Depende de cómo se puede iterar el objeto.

En esta sección, discutiremos objetos mutables e inmutables en Java. Además, veremos la diferencia entre ellos.

¿Qué son los objetos mutables?

Los objetos mutables son objetos cuyo valor se puede cambiar después de la inicialización. Podemos cambiar los valores del objeto, como el campo y los estados, después de crear el objeto. Por ejemplo, Java.util.Date , Constructor de cadenas , búfer de cadena , etc.

Cuando realizamos un cambio en objetos mutables existentes, no se creará ningún objeto nuevo; en cambio, alterará el valor del objeto existente. Las clases de estos objetos proporcionan métodos para realizar cambios en ellos.

Los Getters y Setters (métodos get() y set()) están disponibles en objetos mutables. El objeto mutable puede o no ser seguro para subprocesos.

directorio en comandos de Linux

¿Qué son los objetos inmutables?

Los objetos inmutables son objetos cuyo valor no se puede cambiar después de la inicialización. No podemos cambiar nada una vez creado el objeto. Por ejemplo, objetos primitivos como int, largo , flotar , doble , todas las clases heredadas, clase contenedora , clase de cadena , etc.

En pocas palabras, inmutable significa no modificado o inmutable. Una vez que se crean los objetos inmutables, sus valores y estado de objeto no se pueden cambiar.

Solo los Getters (método get()) están disponibles, no los Setters (método set()) para objetos inmutables.

cómo mostrar una aplicación en Android

Veamos cómo crear clases para objetos mutables e inmutables.

Cómo crear una clase mutable

Las dos cosas siguientes son esenciales para crear una clase mutable:

  • Métodos para modificar los valores de los campos.
  • Getters y Setters de los objetos.

Considere el siguiente ejemplo de la clase mutable:

 public class JtpExample { private String s; JtpExample(String s) { this.s = s; } public String getName() { return s; } public void setName(String coursename) { this.s = coursename; } public static void main(String[] args) { JtpExample obj = new JtpExample('JavaTpoint'); System.out.println(obj.getName()); // Here, we can update the name using the setName method. obj.setName('Java Training'); System.out.println(obj.getName()); } } 

Producción:

 JavaTpoint Java Training 

En el ejemplo anterior, estamos cambiando el valor del nombre usando el método setName.

Cómo crear una clase inmutable

Las siguientes cosas son esenciales para crear una clase inmutable:

  • Clase final, que se declara como final por lo que no se puede ampliar.
  • Todos los campos deben ser privados para que se bloquee el acceso directo a los campos.
  • Sin establecedores
  • Todos los campos mutables deben ser finales para que no se puedan iterar una vez inicializados.

Considere el siguiente ejemplo:

rebajas con imágenes
 public class JtpExample1 { private final String s; JtpExample1(final String s) { this.s = s; } public final String getName() { return s; } public static void main(String[] args) { JtpExample obj = new JtpExample('Core Java Training'); System.out.println(obj.getName()); } } 

Producción:

 Core Java Training 

Por lo tanto, hemos discutido los objetos y clases mutables e inmutables. Analicemos las diferencias entre ellos:

Diferencia entre objetos mutables e inmutables

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

  • Los objetos mutables se pueden cambiar a cualquier valor o estado sin agregar un nuevo objeto. Mientras que los objetos inmutables no se pueden cambiar a su valor o estado una vez creados. En el caso de objetos inmutables, siempre que cambiemos el estado del objeto, se creará un nuevo objeto.
  • Los objetos mutables proporcionan un método para cambiar el contenido del objeto. Comparativamente, los objetos inmutables no proporcionan ningún método para cambiar los valores.
  • Los objetos mutables soportan tanto a los establecedores como a los captadores. Comparativamente, los objetos inmutables solo admiten establecedores, no captadores.
  • Los objetos mutables pueden o no ser seguros para subprocesos, pero los objetos inmutables son seguros para subprocesos de forma predeterminada.
  • Los ejemplos de clases mutables son StringBuffer, Java.util.Date, StringBuilder, etc. Mientras que los objetos inmutables son clases heredadas, clases contenedoras, clases String, etc.

Considere la siguiente tabla:

Mudable Inmutable
Podemos cambiar el valor de los objetos mutables después de la inicialización. Una vez que se inicia un objeto inmutable; No podemos cambiar sus valores.
El estado se puede cambiar. El estado no se puede cambiar.
En los objetos mutables no se forman nuevos objetos. En los objetos inmutables, se forma un nuevo objeto cuando se modifica el valor del objeto.
Proporciona métodos para cambiar el objeto. No proporciona ningún método para cambiar el valor del objeto.
Admite los métodos get() y set() para relacionarse con el objeto. Solo admite el método get() para pasar el valor del objeto.
Las clases mutables pueden o no ser seguras para subprocesos. Las clases inmutables son seguras para subprocesos.
Lo esencial para crear una clase mutable son los métodos para modificar campos, captadores y definidores. Los elementos esenciales para crear una clase inmutable son la clase final, los campos privados y los objetos mutables finales.

¿Por qué las cadenas en Java son inmutables?

String en Java es una clase muy especial, ya que se utiliza en casi todos los programas Java. Por eso es inmutable para mejorar el rendimiento y la seguridad. Entendámoslo en detalle:

En Java, las cadenas utilizan el concepto de literales. Supongamos que tenemos un objeto que tiene muchas variables de referencia. En tal escenario, si cambiamos el valor de una variable de referencia, afectará a todo el objeto y a todos sus valores.

Además de las razones anteriores, las siguientes razones también son responsables de que la cadena sea inmutable:

Los objetos inmutables son muy simples; no hay necesidad de sincronización y son inherentemente seguros para subprocesos. Pero los objetos inmutables son buenos componentes básicos para otros objetos, por lo que debemos brindarles un cuidado especial.

La mayoría de los desarrolladores hacen de String el objeto final para que no pueda modificarse más adelante.

matriz de látex

Conclusión

Hemos analizado los objetos mutables e inmutables en Java, ahora tenemos una comprensión clara de los objetos y clases tanto mutables como inmutables. Además, hemos visto cómo crear una clase mutable e inmutable.

Cabe señalar que los objetos inmutables se pueden cambiar a su valor y estado una vez iniciados y pueden o no ser seguros para subprocesos. Comparativamente, los objetos inmutables no se pueden cambiar a su estado y valor y son seguros para subprocesos predeterminados.