Bien el metodo guardar ya funciona, tuve que generalizar como me comentastes, sin 
<Alumno>, y colocar el 
toString() en la lista antes de guardar. 
Pero ahora lo que me falta es la carga del archivo, y pasarlo a un arrayList, me das a entender que con el toString() pueda solucionarlo, pero me sigue tirando el error, pero esta vez en la ejecución de la aplicación.
-         try { 
-             lista  = (ArrayList)-  ficheroEntrada. readObject();
-             ficheroEntrada.close(); 
-             if (lista == null) { 
-                 System- . out- . println("<Lista peliculas vacio>");
 
-             } else { 
-                 System- . out- . println("<Lista peliculas llena>");
 
-             } 
-             return lista; 
-             return null; 
-             return null; 
-             return null; 
-         } 
-     } 
-   
En la linea 5 es donde me da el error, estoy seguro que tiene que ser algo del casting, pero no lo veo, he probado con ArrayList <String> y sigue igual, y en este metodo esta generalizado el arrayList, por eso no creo que alla problema.
Por otro lado el metodo que utilizo en otra clase, es este:
-     private void-  btnCargar_actionPerformed (ActionEvent-  e ) {
 
-                 if (fichero.exists()) { 
-                     listaAlumnos.clear(); 
-                     listaAlumnos = Funciones.cargar(fichero); 
-                     btnGuardar.setEnabled(true); 
-                 } else { 
-                     listaAlumnos.clear(); 
-                 } 
-                  
-     } 
-   
La linea 6 del metodo, es la que dice que hay que convertirlo, que va directamente al metodo de carga de la clase funciones, no se donde más mirar, ¿Algún consejo?.
Un saludo y muchas gracias.