2011-08-21 16 views
13

duplicados posibles:
marker interface
What is the purpose of a marker interface?¿Cuál es el propósito de la interfaz de marcador?

que saben lo que es la interfaz de marcador - Una interfaz sin métodos. Ejemplo: Serializable, Remoto, Clonable.

Me pregunto cuál es el propósito del marcador inteface. Este es mi entendimiento: -

Básicamente es solo para identificar los objetos especiales de los objetos normales. Al igual que en el caso de la serialización, los objetos que necesitan ser serializados deben implementar una interfaz serializable y, a través de la línea, el método writeObject() debe verificar en algún lugar si es una instancia de serialización o no. Por lo que yo pienso, ese es el único propósito para el cual writeObject usa una interfaz serializable (interfaz de marcador). ¿Derecha? o jvm proporciona alguna funcionalidad adicional también sobre la base de interfaz serializable?

Tipo similar de lógica es cierto para la interfaz clonable.

Ahora veamos cómo es útil.

Digamos que en una aplicación tenemos 1000 objetos de valor. Queremos serializar solo 100 objetos específicos. Ahora JDK ha dicho que el rol del programador es solo marcar el objeto como especial con la interfaz de marcador, en este caso su interfaz serializable. ¿Ahora JDK se ocupará de qué objeto serializar o no?

Sí, podríamos lograr este tipo de comportamiento con algún tipo de bandera bolleana. pero ese sería un mal enfoque.

Similarmente podemos decir que en el caso de una interfaz de marcador definida por el usuario, podemos distinguir objetos especiales con la ayuda de la interfaz de marcador. Como podemos usar una instancia de operador para determinar si es una instancia de esa interfaz en particular. En caso afirmativo, proceda en caso de que no arroje alguna excepción.

Por favor, deje que si la comprensión anterior es correcta?

+0

hay duplicados. déjame encontrarlos – Bozho

Respuesta

14

Tu conocimiento es correcto. La interfaz de marcador también define un tipo. Por lo tanto, se puede usar en las firmas de métodos. Por ejemplo, el Session.get() method de Hibernate toma un Serializable como argumento. Evita pasar una clave principal que no podría ser serializable como argumento.

Tenga en cuenta que Cloneable es, retrospectivamente, una mala opción de diseño.

Serializable ciertamente podría haberse implementado con una anotación si existían cuando se implementó la serialización.

Las interfaces de marcador son, la mayoría de las veces, un antipatrón. Una interfaz debe definir un comportamiento polimórfico. Una interfaz de marcador puede ser reemplazada por una anotación.

+0

este enlace también demostró lo mismo http://javarevisited.blogspot.in/2012/01/what-is-marker-interfaces-in-java-and.html –

Cuestiones relacionadas