I asked you this earlier, but just to make sure.

If this what you posted, is your actual java file, (as in not something you pasted together for the purposes of attaching it here) there are several things awry.

1) You have two public classes in the file. While Employee is not declated public, it is public by default. Also Staff is public. You cannot have this. It simply will not work. Either break them to separate classes (resulting separate files), or you can make one inner class of the other. Advice to take the first option.

2) Where are the imports? For the class to get to use all the things you use, the relevant classes need to be declared in the imports. Else it just wont work. Here is the import declarations that I have for testing the code.

Code:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.ConcurrentModificationException;
import java.util.Iterator;
import java.util.List;
3) The name of the file must match the name of the public class declared. Which is why you cannot have more than one public class to a file. Could it be that you have at a stage just pasted new code or renamed the class by brure force? That would explain this odd incosistency. Always when renaming anything, be it a class, method or variable... use the renaming tools provided by the IDE. Usually they also apply the change where ever changed element is referenced.