Então galera, to com um probleminha na hora de fazer o serializable :B
Preciso de uma ajuda, da uns erro muito loco e nem tenho idéia, já fiz de tudo :\
Vou postar os códigos abaixo:
import java.io.*;
public class DvdCadastro {
static BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
static ListarDVD listaDvd = new ListarDVD();
static Dvd dvd;
public static void runPrograma(){
try{
System.out.println("1 - Cadastrar DVD Filme\n2 - DVD Show/Música\nOpção: ");
int opcCad = Integer.parseInt(buff.readLine());
switch(opcCad){
case 1:
DvdCadastroFilme dvdFilme = new DvdCadastroFilme();
dvdFilme.cadastrarFilme();
listaDvd.catalogaDVDCadastrados(dvdFilme.retornaQntCad(),
dvdFilme.retornaArrayDvdFilme());
dvdFilme.lerArqSerializado();
break;
case 2:
DvdCadastroMusical dvdMusical = new DvdCadastroMusical();
dvdMusical.cadastrarMusical();
listaDvd.catalogaDVDCadastrados(dvdMusical.retornaQntCad(),
dvdMusical.retornaArrayDvdMus());
dvdMusical.lerArqSerializado();
break;
default :
System.out.print("\n\nOpção Inválida!");
break;
}
}catch (Exception e) {
// TODO: handle exception
System.out.print("Erro na Entrada de Dados! "+e.getMessage()+"\n");
}
}
public static void main(String[] args) {
runPrograma();
}
}
package eseei.emprestimo.listar;
import java.io.*;
public class DvdCadastroMusical{
BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
Dvd[] dvd;
int qntDVDCadastrado = 0;
public void cadastrarMusical(){
String title, autor, yesOrno;
int ano;
try{
//gerar arquivo para gravação
FileOutputStream musicArq = new FileOutputStream("MUSICAL.dat");
//gerar objeto para gravar objetos
ObjectOutputStream gravarMusic = new ObjectOutputStream(musicArq);
System.out.print("Deseja cadastrar algum DVD Musical/Show?");
yesOrno = buff.readLine();
if(yesOrno.equals("sim")){
System.out.print("Entre com a quantidade de DVD's para cadastrar");
int numDeDvd = Integer.parseInt(buff.readLine());
dvd = new Dvd[numDeDvd];
for(int i = 0; i < numDeDvd; i++){
System.out.println("Entre com o Título do DVD, " +
"seguido do autor e o ano : ");
title = buff.readLine(); autor = buff.readLine();
ano = Integer.parseInt(buff.readLine());
dvd[i] = new Dvd(title, autor, ano);
System.out.print("Quantas Faixas tem o DVD Musical/Show?");
int qntFaixas = Integer.parseInt(buff.readLine());
for(int j = 0; j < qntFaixas; j++){
System.out.print("Entre com o nome da Faixa "+(j+1)+" : " );
String nomeFaixas = buff.readLine();
dvd[i].incluirFaixa(nomeFaixas);
}
++qntDVDCadastrado;
}
}else if(yesOrno.equals("não")){
System.out.print("Nenhum DVD cadastrado!");
}
gravarMusic.flush();
gravarMusic.close();
musicArq.flush();
musicArq.close();
}catch (Exception e) {
// TODO: handle exception
System.out.print("Erro na entrada de Dados! "+e.getMessage());
e.printStackTrace();
}
}
public Dvd[] retornaArrayDvdMus(){
return dvd;
}
public int retornaQntCad(){
return qntDVDCadastrado;
}
public void lerArqSerializado(){
try{
FileInputStream readArq= new FileInputStream("MUSICAL.dat");
ObjectInputStream readDvd = new ObjectInputStream(readArq);
dvd = (Dvd[]) readDvd.readObject();
for(int i = 0; i < qntDVDCadastrado; i++){
System.out.print(dvd[i].retornaDVD());
}
readDvd.close();
readArq.close();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
package eseei.emprestimo.listar;
import java.io.*;
public class DvdCadastroFilme {
BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
Dvd[] dvd;
int qntDVDCadastrado = 0;
public void cadastrarFilme(){
String title, autor, yesOrno;
int ano;
try{
//gerar arquivo para gravação
FileOutputStream filmeArq = new FileOutputStream("FILMES.dat");
//gerar objeto para gravar outros objetos
ObjectOutputStream gravarFilme = new ObjectOutputStream(filmeArq);
System.out.print("Deseja cadastrar algum DVD Filme?\n");
yesOrno = buff.readLine();
if(yesOrno.equals("sim")){
System.out.print("Entre com a quantidade de DVD's para cadastrar\n");
int numDeDvd = Integer.parseInt(buff.readLine());
dvd = new Dvd[numDeDvd];
for(int i = 0; i < numDeDvd; i++){
System.out.println("Entre com o Título do DVD, " +
"seguido do autor e o ano : ");
title = buff.readLine(); autor = buff.readLine();
ano = Integer.parseInt(buff.readLine());
dvd[i] = new Dvd(title, autor, ano);
++qntDVDCadastrado;
}
}else if(yesOrno.equals("não")){
System.out.print("Nenhum DVD cadastrado!");
}
gravarFilme.writeObject(gravarFilme);
gravarFilme.flush();
gravarFilme.close();
filmeArq.flush();
filmeArq.close();
}catch (Exception e) {
// TODO: handle exception
System.out.print("Erro na entrada de Dados! "+e.getMessage());
e.printStackTrace();
}
}
public Dvd[] retornaArrayDvdFilme(){
return dvd;
}
public int retornaQntCad(){
return qntDVDCadastrado;
}
public void lerArqSerializado(){
try{
FileInputStream readArq= new FileInputStream("FILMES.dat");
ObjectInputStream readDvd = new ObjectInputStream(readArq);
dvd = (Dvd[]) readDvd.readObject();
for(int i = 0; i < qntDVDCadastrado; i++){
System.out.print(dvd[i].retornaDVD());
}
readArq.close();
readArq.close();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
package eseei.emprestimo.listar;
import java.io.*;
public class ListarDVD {
BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
public void catalogaDVDCadastrados(int qntDVDCadastrado, Dvd[] dvd){
try{
System.out.print("Deseja verificar os DVD's de filme ou de músical/show?\n1 - Filme" +
"\n2 - Musical/Show");
int optReturnDVD = Integer.parseInt(buff.readLine());
switch(optReturnDVD){
case 1:
for(int i = 0; i < qntDVDCadastrado; i++){
System.out.print("\n"+dvd[i].retornaDVD()+"\n");
}
System.out.print("\nNúmero de DVD's cadastrados é de :" +
" "+qntDVDCadastrado);
break;
case 2:
for (int i = 0; i < qntDVDCadastrado; i++) {
System.out.print("\n"+dvd[i].retornaDVD()+"\n");
dvd[i].retornaFaixa();
}
System.out.print("\nNúmero de DVD's cadastrados é de :" +
" "+qntDVDCadastrado);
break;
}
}catch (Exception e) {
// TODO: handle exception
System.out.println("Erro na Entrada de Dados! "+e.getMessage());
e.printStackTrace();
}
}
}
package eseei.emprestimo.listar;
import java.io.Serializable;
import java.util.ArrayList;
public class Dvd implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String title, autor;
private int ano;
ArrayList<String> faixaDVD = new ArrayList<String>();
public Dvd(String title, String autor, int ano){
this.title = title;
this.autor = autor;
this.ano = ano;
}
public void incluirFaixa(String nomedaFaixa){
faixaDVD.add(nomedaFaixa);
}
public void excluirFaixa(int faixaPos){
faixaDVD.remove(faixaPos);
}
public String retornaDVD(){
return "Título DVD : "+this.title+"\nAutor : "+this.autor+"\nAno : "+this.ano;
}
public void retornaFaixa(){
int i = 1;
for(String faixas : faixaDVD){
System.out.print(i == 1? " Faixas: "+(i++)+"."+faixas : "\n "+(i++)+"."+faixas);
}
}
}
Meio extenso :~
aqui vão os erros
java.io.ObjectOutputStreamjava.io.NotSerializableException: java.io.ObjectOutputStream
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at eseei.emprestimo.listar.DvdCadastroFilme.cadastrarFilme(DvdCadastroFilme.java:37)
at eseei.emprestimo.listar.DvdCadastro.runPrograma(DvdCadastro.java:18)
at eseei.emprestimo.listar.DvdCadastro.main(DvdCadastro.java:50)
//outros
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: java.io.ObjectOutputStream
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at eseei.emprestimo.listar.DvdCadastroFilme.lerArqSerializado(DvdCadastroFilme.java:61)
at eseei.emprestimo.listar.DvdCadastro.runPrograma(DvdCadastro.java:21)
at eseei.emprestimo.listar.DvdCadastro.main(DvdCadastro.java:50)
Caused by: java.io.NotSerializableException: java.io.ObjectOutputStream
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at eseei.emprestimo.listar.DvdCadastroFilme.cadastrarFilme(DvdCadastroFilme.java:37)
at eseei.emprestimo.listar.DvdCadastro.runPrograma(DvdCadastro.java:18)
... 1 more
Muito obrigado. \o