1

I am just trying to output a previously created ArrayList to serialise it for future storage.

but when I attmept to do so I get the runTime error "notSerialisableException: Department.

Is their a speicial way of serializing an arrayList??

Would someone be able to tell me why I may be getting this error.

This is the code:

   import java.awt.*;
   import java.util.*;
   import java.io.*;
   import java.io.Serializable;

   public class tester1ArrayListObjectSave
  {

    private ArrayList <Department> allDeps = new ArrayList<Department>();
    private int choice = 0;
    private String name;
    private String loc; 


    Department theDepartment;
    Scanner scan;   

    public static void main(String[] args)
    {   

    new tester1ArrayListObjectSave();       

    }

    public tester1ArrayListObjectSave()
    {
            scan = new Scanner(System.in);
            options();
    } 

    public void options()
    {
        System.out.println("wadya wanna do");



        System.out.println("1. create a new department");
        System.out.println("2. read from text file");
        System.out.println("4. save it to system as a serializable file");
        System.out.println(". read from text file");
        System.out.println("3. to exit");

        choice = scan.nextInt();
        workOutOptions();

    }

    public void workOutOptions()
    {
        if (choice ==1)
        {
            createNewEmp();
        }
        else if (choice ==2)
        {
            try
            {
            readTextToSystem();
            }
            catch (IOException exc)
            {
                System.out.println("uh oh their was an error: "+exc);
            }
        }
        else if (choice == 3)
        {
            System.exit(0);
        }
        else if (choice ==4)
        {
            try
            {
            createSerialisable();
            }
            catch (IOException exc)
            {
                System.out.println("sorry could not serialise data cause of this:"+exc);
            }
        }
        else
        {
            System.out.println("do nothing");
        }
    }


    public void createNewEmp()
    {


            System.out.println("What is the name");
            name = scan.next();
            System.out.println("what is the chaps loc");
            loc = scan.next();
            try
            {
                saveToSystem();
            }
                catch (IOException exc)
            {
            // do something here to deal with problems
            }
            theDepartment = new Department(name,loc);

            allDeps.add(theDepartment);

            options();
    }

    public void saveToSystem() throws IOException
    {
        FileOutputStream fos = new FileOutputStream( "backUp.txt", true ); 
        PrintStream outFile = new PrintStream(fos);
        System.out.println("added to system succesfully");
        outFile.println(name);
        outFile.println(loc);
        outFile.close();
        options();      
    }

    public void readTextToSystem() throws IOException
    {
        Scanner inFile = new Scanner ( new File ("backUp.txt") );
        while (inFile.hasNextLine())
        {
        name=inFile.nextLine();
        System.out.println("this is the name: "+name);
        loc = inFile.nextLine();
        System.out.println("this is the location: "+loc);
        Department dDepartment = new Department(name,loc);
        allDeps.add(dDepartment);
        options();

        }
        System.out.println(allDeps);
    }

    public void createSerialisable() throws IOException
    {
        FileOutputStream fileOut =  new FileOutputStream("theBkup.ser");
        ObjectOutputStream out =  new ObjectOutputStream(fileOut);
        out.writeObject(allDeps);
        options();
    }

}
2
  • 4
    Department needs to implement the Serializable interface. Commented Oct 30, 2011 at 3:50
  • so does that mean, the object department in its code needs to be declared as public class deparment implements serializable ?? Commented Oct 30, 2011 at 3:54

1 Answer 1

7

ArrayList isn't the problem; your Department object is.

You need to implement the Serializable interface in that object.

Sign up to request clarification or add additional context in comments.

2 Comments

yep thanks its all good now, im still learning this serializable stuff
in order to deserialise the array list would I write something like this ArrayList<Department> theDeps = new ArrayList<Department>(); theDeps = (ArrayList) in.readObject();

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.