Problemas com serialização

Salve galera.

Estou com uma dificuldade aqui com Serialização, na real na parte de leitura.
Não sei se é bem avançado, mas por vias da duvida resolvi postar aqui.

Estou fazendo um trabalho da faculdade, e travei nessa parte.

Tenho o código abaixo, o qual deve ser um menu que deveria instanciar um metodo para exibir a lista de dados inscritos nos objetos serializados…
Contudo não consigo instanciar o método que fiz no Main. LerArquivoSerializado
Segue abaixo o codigo. Agradeço se puderem me dar uma explanada.
Creio que o método de leitura e escrita de arquivos serializados está correto.

[code]package locadora;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

public class Main {
private static String dvdPath;
private static String livroPath;
private static String socioPath;
private static String autorPath;

private static ArrayList<Dvd> listaDvd;
private static ArrayList<Livro> listaLivro;
private static ArrayList<Socio> listaSocio;
private static ArrayList<Autor> listaAutor;




/**
 * @param args
 * @param List 
 */
public static void main(String[] args) {
	leArquivoConfiguracao("c:\\locadora\\conf.txt");
	leArquivosBinarios();
	Menu.main(args);
	gravarArquivosBinarios();

}

public static void leArquivoConfiguracao(String path){
	File conf = new File(path);
	if (conf.isFile()) {
		try {
			InputStream is = new FileInputStream(conf);
			InputStreamReader isr = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(isr);
			String s1 = br.readLine();
			String s2 = br.readLine();
			String s3 = br.readLine();
			String s4 = br.readLine();
			String s5 = br.readLine();
			dvdPath = new String(s1+s2);
			livroPath = new String(s1+s3);
			socioPath = new String(s1+s4);
			autorPath = new String(s1+s5);
		} catch (IOException e) {
			System.out.println("Erro 02: Não foi possivel ler o arquivo de configuração.");
		}
	}else {
		System.out.println("Erro 01: Arquivo não encontrado.");
	}
}


private static void leArquivosBinarios() {
	listaDvd = (ArrayList<Dvd>) LerArquivoSerializado(dvdPath, listaDvd);
	if (listaDvd==null) {
		listaDvd = new ArrayList<Dvd>();
	}		 
	listaLivro = (ArrayList<Livro>)LerArquivoSerializado(livroPath, listaLivro);
	if (listaLivro==null) {
		listaLivro = new ArrayList<Livro>();
	}
	listaSocio = (ArrayList<Socio>)LerArquivoSerializado(socioPath, listaSocio);
	if (listaSocio==null) {
		listaSocio = new ArrayList<Socio>();
	}
	listaAutor = (ArrayList<Autor>)LerArquivoSerializado(autorPath, listaAutor);
	if (listaAutor==null) {
		listaAutor = new ArrayList<Autor>();
	}
}

private static void gravarArquivosBinarios() {
	 GravaArquivoSerializado(dvdPath, listaDvd);
	 GravaArquivoSerializado(livroPath, listaLivro);
	 GravaArquivoSerializado(socioPath, listaSocio);
	 GravaArquivoSerializado(autorPath, listaAutor);
}

public static void addDvd(Dvd dvd){
	listaDvd.add(dvd);
}

public static void addLivro(Livro livro){
	listaLivro.add(livro);
}
public static void addSocio(Socio socio){
	listaSocio.add(socio);
}
public static void addAutor(Autor autor){
	listaAutor.add(autor);
}

public static List<Dvd> getListaDvd() {
	return listaDvd;
}

public static void setListaDvd(List<Dvd> listaDvd) {
	Main.listaDvd = (ArrayList<Dvd>) listaDvd;
}

public static List<Livro> getListaLivro() {
	return listaLivro;
}

public static void setListaLivro(List<Livro> listaLivro) {
	Main.listaLivro = (ArrayList<Livro>) listaLivro;
}

public static List<Socio> getListaSocio() {
	return listaSocio;
}

public static void setListaSocio(List<Socio> listaSocio) {
	Main.listaSocio = (ArrayList<Socio>) listaSocio;
}

public static List<Autor> getListaAutor() {
	return listaAutor;
}

public static void setListaAutor(List<Autor> listaAutor) {
	Main.listaAutor = (ArrayList<Autor>) listaAutor;
}
public static List LerArquivoSerializado(String path, List<?> lista){
	try {
		FileInputStream arq = new FileInputStream(path);
		ObjectInputStream ois = new ObjectInputStream(arq);
		lista = (List<?>) ois.readObject();
		ois.close();
		arq.close();
		return lista;
	}
	catch (Exception e){
		e.printStackTrace();
	}

	
	return null;	

}
public static void GravaArquivoSerializado (String path, List<?> lista){
	try {
		FileOutputStream arq = new FileOutputStream(path);
		ObjectOutputStream oos = new ObjectOutputStream (arq);
		oos.writeObject(lista);
		oos.flush();
		oos.close();
		arq.flush();
		arq.close();
		System.out.println("Arquivo gravado com sucesso! "+path);
	}
	catch (Exception e){
		e.printStackTrace();
		}
	
	}

}[/code]

Main

[code]package locadora;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

public class Main {
private static String dvdPath;
private static String livroPath;
private static String socioPath;
private static String autorPath;

private static ArrayList<Dvd> listaDvd;
private static ArrayList<Livro> listaLivro;
private static ArrayList<Socio> listaSocio;
private static ArrayList<Autor> listaAutor;




/**
 * @param args
 * @param List 
 */
public static void main(String[] args) {
	leArquivoConfiguracao("c:\\locadora\\conf.txt");
	leArquivosBinarios();
	Menu.main(args);
	gravarArquivosBinarios();

}

public static void leArquivoConfiguracao(String path){
	File conf = new File(path);
	if (conf.isFile()) {
		try {
			InputStream is = new FileInputStream(conf);
			InputStreamReader isr = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(isr);
			String s1 = br.readLine();
			String s2 = br.readLine();
			String s3 = br.readLine();
			String s4 = br.readLine();
			String s5 = br.readLine();
			dvdPath = new String(s1+s2);
			livroPath = new String(s1+s3);
			socioPath = new String(s1+s4);
			autorPath = new String(s1+s5);
		} catch (IOException e) {
			System.out.println("Erro 02: Não foi possivel ler o arquivo de configuração.");
		}
	}else {
		System.out.println("Erro 01: Arquivo não encontrado.");
	}
}


private static void leArquivosBinarios() {
	listaDvd = (ArrayList<Dvd>) LerArquivoSerializado(dvdPath, listaDvd);
	if (listaDvd==null) {
		listaDvd = new ArrayList<Dvd>();
	}		 
	listaLivro = (ArrayList<Livro>)LerArquivoSerializado(livroPath, listaLivro);
	if (listaLivro==null) {
		listaLivro = new ArrayList<Livro>();
	}
	listaSocio = (ArrayList<Socio>)LerArquivoSerializado(socioPath, listaSocio);
	if (listaSocio==null) {
		listaSocio = new ArrayList<Socio>();
	}
	listaAutor = (ArrayList<Autor>)LerArquivoSerializado(autorPath, listaAutor);
	if (listaAutor==null) {
		listaAutor = new ArrayList<Autor>();
	}
}

private static void gravarArquivosBinarios() {
	 GravaArquivoSerializado(dvdPath, listaDvd);
	 GravaArquivoSerializado(livroPath, listaLivro);
	 GravaArquivoSerializado(socioPath, listaSocio);
	 GravaArquivoSerializado(autorPath, listaAutor);
}

public static void addDvd(Dvd dvd){
	listaDvd.add(dvd);
}

public static void addLivro(Livro livro){
	listaLivro.add(livro);
}
public static void addSocio(Socio socio){
	listaSocio.add(socio);
}
public static void addAutor(Autor autor){
	listaAutor.add(autor);
}

public static List<Dvd> getListaDvd() {
	return listaDvd;
}

public static void setListaDvd(List<Dvd> listaDvd) {
	Main.listaDvd = (ArrayList<Dvd>) listaDvd;
}

public static List<Livro> getListaLivro() {
	return listaLivro;
}

public static void setListaLivro(List<Livro> listaLivro) {
	Main.listaLivro = (ArrayList<Livro>) listaLivro;
}

public static List<Socio> getListaSocio() {
	return listaSocio;
}

public static void setListaSocio(List<Socio> listaSocio) {
	Main.listaSocio = (ArrayList<Socio>) listaSocio;
}

public static List<Autor> getListaAutor() {
	return listaAutor;
}

public static void setListaAutor(List<Autor> listaAutor) {
	Main.listaAutor = (ArrayList<Autor>) listaAutor;
}
public static List LerArquivoSerializado(String path, List<?> lista){
	try {
		FileInputStream arq = new FileInputStream(path);
		ObjectInputStream ois = new ObjectInputStream(arq);
		lista = (List<?>) ois.readObject();
		ois.close();
		arq.close();
		return lista;
	}
	catch (Exception e){
		e.printStackTrace();
	}

	
	return null;	

}
public static void GravaArquivoSerializado (String path, List<?> lista){
	try {
		FileOutputStream arq = new FileOutputStream(path);
		ObjectOutputStream oos = new ObjectOutputStream (arq);
		oos.writeObject(lista);
		oos.flush();
		oos.close();
		arq.flush();
		arq.close();
		System.out.println("Arquivo gravado com sucesso! "+path);
	}
	catch (Exception e){
		e.printStackTrace();
		}
	
	}

}
[/code]

Dei uma olhada rapido e me confundi um pouco.

Vc postou duas vezes a mesma classe (Main), nao? Voce esta chamado Menu.main(args) por qual motivo?
onde esta a classe Menu? da uma lida mais a fundo sobre o metodo main em Java e como executa-lo, acho
que “Menu.main(args)” nao faz muito sentido pro que voce quer fazer.

Espero ter ajudado.