marker interface java
Este tutorial explica qué es una interfaz de marcador en Java. También cubre la serialización, la deserialización y la clonación en Java con ejemplos de código:
Discutiremos el último tema en Interfaces, es decir, Interfaz de marcador en Java.
Una vez que hayamos terminado con la interfaz del marcador, discutiremos dos ejemplos, es decir, interfaz serializable y clonable en Java. Comencemos con la interfaz del marcador.
=> Visite aquí para aprender Java desde cero
Lo que vas a aprender:
- Interfaz de marcador en Java
- Serialización en Java
- Interfaz serializable de Java
- Interfaz clonable en Java
- Conclusión
Interfaz de marcador en Java
Una interfaz de marcador en Java es una interfaz vacía que no tiene campos ni métodos. Esta interfaz de marcador le dice al compilador que los objetos de la clase que implementan la interfaz de marcador son diferentes y que deben tratarse de manera diferente.
Cada interfaz de marcador en Java indica que representa algo especial para JVM o compilador.
En Java, tenemos tres interfaces que son interfaces de marcador como se muestra a continuación:
# 1) Interfaz serializable: Serializable es una interfaz de marcador presente en el paquete java.io. Podemos serializar objetos usando esta interfaz, es decir, guardar el estado del objeto en un archivo.
# 2) Interfaz clonable: La interfaz clonable es parte del paquete java.lang y permite clonar los objetos.
# 3) Interfaz remota: La interfaz remota es parte del paquete java.RMI y usamos esta interfaz para crear aplicaciones RMI. Esta interfaz se ocupa principalmente de objetos remotos.
En este tutorial, discutiremos la interfaz serializable y clonable. La interfaz remota se discutirá cuando pasemos a RMI en Java.
Serialización en Java
Antes de entrar en los detalles de la interfaz serializable en Java, comprendamos el proceso de serialización y deserialización en Java.
La serialización se puede definir como un proceso mediante el cual convertimos el estado del objeto en su flujo de bytes equivalente para almacenar el objeto en la memoria en un archivo o persistir el objeto.
Cuando queremos recuperar el objeto de su estado guardado y acceder a su contenido, tendremos que convertir el flujo de bytes de nuevo al objeto Java real y este proceso se llama deserialización.
De esta manera, puede haber muchas instancias en las que necesitemos serializar / deserializar objetos Java durante la vida útil de una aplicación Java.
El proceso de serialización / deserialización se muestra a continuación:
Como se muestra arriba, la serialización convierte el objeto en una secuencia. La deserialización vuelve a convertir el flujo de bytes en un objeto Java.
Todo el mecanismo de serialización y deserialización es independiente de la plataforma. Esto significa que podemos serializar el objeto en una plataforma y luego deserializarlo en una plataforma diferente.
Cuando decimos que hemos serializado el objeto Java, significa que hemos llamado al método de ObjectOutputStream writeObject () para escribir el objeto en un archivo.
descarga gratuita del convertidor de youtube a wav
public final void writeObect (Object obj) lanza IOException
De manera similar, en el caso de la deserialización, llamamos al método ObjectInputStream :: readObject () para leer los datos del archivo que ha almacenado el objeto.
El objeto público final readObject () lanza IOException, ClassNotFoundException
Interfaz serializable de Java
Java proporciona la interfaz denominada 'serializable' mediante la cual podemos implementar la serialización y deserialización en Java.
La interfaz serializable es parte del paquete java.io. Es un ejemplo de una interfaz de marcador que discutimos anteriormente y0 que no tiene métodos ni miembros. La interfaz serializable 'marca' las clases de Java para que los objetos de estas clases tengan la capacidad de persistir.
Entonces, la clase cuyo objeto necesitamos persistir debe implementar la interfaz serializable. Luego, el objeto de esta clase (implementando la interfaz serializable) usará los métodos writeObject () y readObject () respectivamente para serializar y deserializar el objeto de la clase.
Tenga en cuenta que todas las clases contenedoras y la clase String implementan java.io.Serializable de forma predeterminada.
Debemos cumplir la siguiente condición para que un objeto se serialice correctamente:
- La clase cuyos objetos se serializan debe implementar la interfaz java.io.Serializable.
- Todos los campos miembros de la clase deben ser serializables. Si un campo en particular no es serializable, debemos marcarlo como transitorio.
Por el contrario, una clase es serializable solo si implementa la interfaz java.io.Serializable; de lo contrario, no es serializable.
Cómo serializar y deserializar un objeto en Java
Cuando serializamos un objeto en Java usamos el método writeObject de objectOutputStream para escribir el objeto en un archivo.
Para deserializar el objeto en Java usamos el método readObject () de ObjectInputStream para leer el contenido del archivo y leerlo en un objeto.
En este ejemplo, tenemos una clase de Estudiantes que implementa la interfaz Serializable. Esto significa que podemos serializar o deserializar los objetos de la clase Student.
En el método principal del programa Java, creamos un objeto de clase Student. Luego creamos un ObjectOutputStream que apunta a un objeto FileOutputStream que a su vez apunta a un archivo en el que necesitamos escribir el objeto Student. Luego llamamos al método writeObject () que escribe el objeto en el archivo.
Al escribir con éxito el objeto especificado en el archivo especificado, el programa da un mensaje de salida apropiado. Luego deserializamos el objeto invirtiendo el proceso anterior. Primero, creamos un objeto ObjectOutputStream en el que leemos el archivo cuyo contenido se va a leer.
Luego usamos el método readObject () para leer el contenido y enviarlo al objeto Student. Luego imprimimos el contenido del objeto Student.
Ejemplo de serialización / deserialización
El siguiente programa Java muestra el mecanismo de serialización / deserialización en Java como se discutió anteriormente.
|_+_|Producción:
Tenga en cuenta que después de la deserialización, obtenemos el mismo objeto que serializamos anteriormente cuando abrimos el mismo archivo nuevamente.
Palabra clave transitoria de Java
Se usa una palabra clave transitoria para hacer que un miembro de datos sea transitorio, es decir, no queremos serializarlo.
Por ejemplo, considere la siguiente clase Empleado. Aquí tenemos el campo Id. De empleado junto con los otros campos. Ahora, si decidimos que el campo Id. De empleado no debe serializarse, lo declaramos como 'transitorio'.
A continuación se proporciona un ejemplo de programa Java.
|_+_|Producción:
En el programa anterior, hemos serializado el objeto Empleado. Pero tenga en cuenta que el campo Id. De empleado de la clase Empleado se declara 'transitorio'. Ahora, para verificar la serialización, deserializamos el objeto. La salida muestra el objeto Empleado como '0 Eddie'. Esto significa que la identificación del empleado no se guardó en el archivo.
Java.io.NotSerializableException en Java
La excepción de java.io.NotSerializableException es una excepción que se lanza cuando la clase no es elegible para la serialización. La clase que no implementa la interfaz serializable deja de ser elegible para la serialización.
El siguiente programa Java demuestra la excepción NotSerializableException.
|_+_|Producción:
Como se ve en el programa anterior, la clase Empleado no implementa la interfaz serializable. Por lo tanto, cuando intentamos serializar el objeto de la clase Empleado, se lanza la excepción NotSerializableException.
Interfaz clonable en Java
La clonación de objetos significa hacer una copia de los objetos. Java admite la clonación de objetos mediante el ' Clonable ' interfaz. La interfaz clonable es una interfaz de marcador y es parte del paquete java.lang.
Cuando una clase implementa la interfaz Cloneable, implica que podemos clonar los objetos de esta clase. La clase Object de Java contiene el ' clon () 'Método. Entonces, la interfaz clonable implementada por una clase en particular autoriza al método clone () a hacer copias de instancias de clase.
Si una clase no implementa una interfaz clonable y aún invoca el método clone (), entonces la excepción CloneNotSupportedException es lanzado por el compilador de Java.
Las clases que implementan la interfaz Cloneable deben anular el método clone ().
Entonces, ¿qué es la clonación de objetos?
La clonación de objetos es un proceso mediante el cual creamos una copia exacta del objeto utilizando el método clone () de la clase Object. Para que el método clone () sea anulado e invocado, la clase necesita implementar la interfaz Cloneable.
La sintaxis general del método clone () se proporciona a continuación:
protegido Clonar objeto () lanza CloneNotSupportedException
El método clone () crea una copia exacta del objeto con menos tiempo de procesamiento que el necesario para crear un nuevo objeto usando la nueva palabra clave.
El siguiente programa Java demuestra el uso del método clone () y la interfaz Cloneable.
|_+_|Producción:
En este programa, tenemos una clase de Estudiante que implementa la interfaz Cloneable. También anula el método clone () llamando al método super.clone (). En el método principal creamos un nuevo objeto Student y luego llamamos al método clone () en este objeto que devuelve el nuevo objeto Student.
Clonar matriz en Java
Exploramos la clonación de matrices en nuestro tutorial sobre matrices. Dado que las matrices Java implementan la interfaz Cloneable de forma predeterminada, no es necesario implementarlas explícitamente. Cuando se clona la matriz unidimensional, se genera una copia profunda de la matriz. Cuando se clona una matriz bidimensional, se realiza una copia superficial.
Hacer una copia superficial es el comportamiento predeterminado del método clone () en Java. Pero la mayoría de las veces deseamos la clonación profunda. En la clonación profunda, hacemos una copia del objeto miembro por miembro y creamos un clon que es independiente del objeto original. Los cambios que se realicen en el objeto clonado no se reflejarán en el objeto original.
El siguiente programa Java muestra la clonación de una matriz unidimensional.
|_+_|Producción:
Lista de clonación en Java
El siguiente programa muestra cómo usar un método clone () para clonar una lista en Java.
|_+_|Producción:
En el programa anterior, vemos que hemos creado una clase MyList que implementa la interfaz Cloneable y dentro de esta clase, anulamos el método clone () que nos ayuda a clonar la List. En el método principal, creamos una lista de elementos y luego clonamos cada elemento de la lista iterando sobre la lista.
Preguntas frecuentes
P # 1) ¿Cuál es el uso de Marker Interface en Java?
Responder: La interfaz de marcador que también se conoce como 'interfaz etiquetada' etiqueta la clase e informa al compilador que esta clase puede implementar un comportamiento especial.
P # 2) ¿Cuáles son todas las interfaces de marcadores en Java?
Responder: Serializable, Cloneable y Remote son las interfaces que son ejemplos de interfaces de marcadores en Java.
P # 3) ¿Por qué se puede serializar una interfaz de marcador?
Responder: La interfaz serializable no tiene métodos ni variables miembro. Es una interfaz vacía que la clasifica como Interfaz de marcador.
P # 4) ¿Se puede ejecutar una interfaz de marcador?
Responder: No, runnable no es una interfaz de marcador. La interfaz ejecutable no está vacía y proporciona una declaración de método run () dentro de ella.
P # 5) ¿Por qué necesitamos implementar una interfaz clonable?
Responder: Al implementar una interfaz clonable para una clase, indicamos que los objetos de esta clase se pueden clonar usando el método clone () de la clase Object. Si una clase que usa el método clone () no implementa una interfaz clonable, se lanza la excepción 'CloneNotSupportedException'.
Conclusión
Con este tutorial, hemos completado nuestra discusión sobre interfaces en Java. Hemos discutido el concepto de interfaces, su estructura, definición, uso, etc. También hemos discutido algunas de las interfaces importantes en las interfaces Comparable, Comparator, Marker como Java, etc.
En este tutorial, discutimos dos ejemplos de interfaces de marcadores, es decir, serializables y clonables. Se utiliza una interfaz serializable para conservar un objeto. La interfaz clonable se usa para clonar los objetos de la clase. Ambas interfaces son interfaces de marcador, es decir, están vacías.
Pero cuando una clase los implementa, indican que el compilador puede esperar algún comportamiento especial de las clases que los implementan.
Por ejemplo, cuando una clase implementa una interfaz serializable, podemos serializar o deserializar los objetos de la clase y guardar / recuperar su estado.
Una clase que implementa una interfaz clonable indica que podemos clonar los objetos de esta clase. La implementación predeterminada del método clone () crea una copia superficial del objeto, mientras que podemos anular el método clone () para crear una copia profunda.
=> Explore la serie completa de formación de Java aquí
Lectura recomendada
- Establecer interfaz en Java: Tutorial de conjunto de Java con ejemplos
- Interfaz ListIterator en Java con ejemplos
- Implementación de Java: creación y ejecución de un archivo JAR de Java
- Y Java, y su implementación y definiciones
- Conceptos básicos de Java: sintaxis de Java, clase de Java y conceptos básicos de Java
- Objeto Java Class Vs: cómo utilizar la clase y el objeto en Java
- Máquina virtual Java: cómo JVM ayuda a ejecutar aplicaciones Java
- Interfaces comparables y comparativas en Java