Nuevo en Java. Aprendiendo mientras se trabaja en una aplicación para Android. Estoy implementando un Comparador para ordenar una lista de los archivos y el android de google docs dicen que un Comparador debe implementar Serializable:

Se recomienda que un Comparador de implements Serializable.

Esta es la interfaz Serializable aquí.

Sólo quiero ordenar una lista de archivos. ¿Por qué debería de implementar este o lo que aún es la razón por la que debería ser para cualquier Comparador?

  • ¿por qué Android de atención acerca de la serialización en todo?
  • ¿Por qué no utilizar la serialización en Android?
InformationsquelleAutor Bjorn | 2011-12-27

5 Comentarios

  1. 50

    Esto no es sólo un Androide cosa, el Java SDK tiene la misma recomendación:

    Nota: es generalmente una buena idea para los comparadores a implementar también en java.io.Serializable, ya que pueden ser utilizados como métodos de ordenación en serializable estructuras de datos (como TreeSet, TreeMap). Para que la estructura de datos para serializar con éxito, el comparador (si lo hay) debe implementar Serializable.

    Así que la idea es que debido a un TreeMap es serializable, y el TreeMap puede contener un Comparador, sería bueno si el Comparador también es serializable. Lo mismo se aplica para todos los elementos de la colección.

    Puede ignorar esta, a menos que el uso de la serialización de esa manera.

  2. 9

    Serializeable es un espacio en blanco de la interfaz. No contiene ningún tipo de métodos. Así, a la práctica, todo lo que tienes que decir es implements Serializable en una clase. No es una carga enorme para usted. Si usted extender Comparator, usted ni siquiera necesita para implementar Serializable porque la super clase no es para usted, y entonces usted no necesita hacer nada en absoluto para implementar Serializable.

    Cuando algo implementa Serializable, que significa que el objeto puede ser transformado en una matriz de bytes a voluntad. Este es utilizado para la transmisión a través de Internet, el almacenamiento en un archivo, etc. Hablando a grandes rasgos, la forma en que funciona la serialización de un objeto, por defecto, es tomar cada objeto al que hace referencia el objeto que se está tratando de serializar, a su vez de cada objeto en una matriz de bytes (es decir, invocar la serialización en forma recursiva), y concatenar las matrices de bytes para producir una matriz de bytes que representa el objeto en general.

    Ahora, ¿por qué debería un Comparator implementar Serializable? Digamos que usted desea serializar un TreeMap o algunos otros ordenó Collection. El objetivo de la serialización es proporcionar una representación completa de un objeto. Colecciones como la TreeMap tener un Comparator objeto en ellas, así que para ser capaz de producir una matriz de bytes que captura todos los aspectos de tales colecciones, usted necesita ser capaz de salvar a la Comparator como una matriz de bytes demasiado. Por lo tanto, Comparator necesita ser Serializable para que otras cosas pueden ser adecuadamente serializado.

    • «Si usted extender Comparador»: Comparador de una interfaz (y no se extiende Serializable). «a la práctica, todo lo que tienes que decir es implements Serializable en una clase» también hay que pensar si esa es la cosa correcta de hacer. por ejemplo, todos los campos de instancia también deben ser serializables (o usted necesita tomar algunas medidas).
  3. 3

    Para serializar un objeto en Java, ambas condiciones deben ser satisfechas:

    1. La clase a la que la instancia pertenece a debe implementar en java.io.Serializable.
    2. Los miembros de la clase debe ser serializable. Si uno o más de los miembros no son para ser serializado, deben ser marcados como transitorio.

    Cuando cualquier estructura de datos utiliza un Comparador y desea que los datos de la estructura a ser serializable, punto 2 (mencionado anteriormente) obliga al comparador de implementar serializable.

  4. 0

    he visto en la API de Java 5
    Enlace a java 5 APT
    que se afirma que mediante la implementación del Comparador no significa implementar la interfaz Serializable todos modos, así que uno tiene que explícitamente prestar atención para obtener Serializable en algunas habitualmente creado Comparador de clase

Dejar respuesta

Please enter your comment!
Please enter your name here