Foros del Web » Programación para mayores de 30 ;) » Java »

ArrayList y ObjectInputStream

Estas en el tema de ArrayList y ObjectInputStream en el foro de Java en Foros del Web. Hola: Tengo dos clases La clase Main donde tengo que cargar un ArrayList de Empleado mediante ObjectInputStream. y la Clase Empleado con sus atyributos y ...
  #1 (permalink)  
Antiguo 21/05/2011, 10:26
 
Fecha de Ingreso: mayo-2011
Ubicación: Coria del Rio , Sevilla
Mensajes: 5
Antigüedad: 13 años
Puntos: 0
ArrayList y ObjectInputStream

Hola:
Tengo dos clases

La clase Main donde tengo que cargar un ArrayList de Empleado mediante ObjectInputStream.

y la Clase Empleado con sus atyributos y Metodos



Mi pregunta es donde coloco el ArrayList :
ArrayList empleados = new ArrayList ();

despues de esto debo hace un instancia de Empleado con :
Empleado empleado = new Empleado();

para mediante empleados.add(empleado); guardarlos en el fichero mediante ObjectOutputStream.

Pues en el ObjectInputStream coloco empleados = (ArrayList)ficheroEntrada.readObject(); y me tira un error.

Saludos y Gracias
  #2 (permalink)  
Antiguo 21/05/2011, 10:41
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: ArrayList y ObjectInputStream

¿Que error te da?
  #3 (permalink)  
Antiguo 24/05/2011, 01:59
 
Fecha de Ingreso: mayo-2011
Ubicación: Coria del Rio , Sevilla
Mensajes: 5
Antigüedad: 13 años
Puntos: 0
Respuesta: ArrayList y ObjectInputStream

Con ayuda de otros he puesto lo siguiente:

public class Principal {
static ArrayList <Empleado> empleados = new ArrayList <Empleado>();

public static void main(String[] args) throws FileNot......{

Empleado empleado = new Empleado();

cargarArrayList();


}

public static void cargarArrayList (){
if (!empleados.isEmpty()) {
try {
ObjectInputStream ficheroEntrada = new ObjectInputStream
(new FileInputStream("c:"+sep+"BINGOcompleto"+sep+"dato s.dat"));
empleados = (ArrayList<Empleado>)ficheroEntrada.readObject();
System.out.println("Datos cargados correctamente...");
System.out.println("Empleados en Archivo:");

Iterator<Empleado> i = empleados.iterator();
while(i.hasNext()){
System.out.println("Elemento del arreglo: "+i.next().getNombre());
}
ficheroEntrada.close();

} catch (ClassNotFoundException cnfe) {
System.out.println("No se pudo acceder a la clase adecuada para revertir la Serializacion al leer del fichero.");
} catch (FileNotFoundException e) {
System.out.println("Error: El fichero no existe. ");
} catch (IOException ioe) {
ioe.printStackTrace();
System.out.println("Error: Fallo en la lectura del fichero. ");
}
}

}

}
En la linea en rojo me tira esta advertencia: Seguridad de tipo: conversión descontrolada de tipo Object a ArrayList<Empleado>

Saludos
  #4 (permalink)  
Antiguo 24/05/2011, 09:27
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: ArrayList y ObjectInputStream

No es un error, es una advertencia. Significa que puede dar problemas, pero no necesariamente es incorrecto.
Lo que pasa es que Java no tiene manera de REALMENTE saber que el objeto serializado es una lista, un set, un perro, etc ... Pero no es nada de que preocuparse, de hecho, puedes suprimir esa advertencia.
@SuppressWarnings(value = "unchecked")
Por esa linea encima del codigo que da la advertencia, en este caso:
empleados = (ArrayList<Empleado>)ficheroEntrada.readObject();

Aunque hacer un chequeo con instanceof no esta de mas.

Si alguien tiene alguna otra forma, favor ponerla aqui. :) Yo tambien he tenido mis dudas en cuanto a esa advertencia.

Etiquetas: arraylist
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:54.