Enum não funciona

7 respostas
adriano_kahn

Oi pessoal. Sou novo no Java e não estou compreendendo o uso do Enum. Por exemplo: Estou querendo implementar a sequência do enum abaixo em um atributo chamado “categoria” do meu objeto “Filmes”, más o código não compila e já tentei de várias formas, segue abaixo os códigos. Se puderem me ajudar a compreener o uso desse recurso, será de grande valia.

//Classe com funções triviais do Sistema Locadora
public class Adicionais 
{
   public enum categoria
   {
      AÇÃO, AVENTURA, COMÉDIA, DOCUMENTARIO, DRAMA, ERÓTICO, FICÇÃO, INFANTIL, MUSICAL, POLICIAL, SERIADO, TERROR;   	
   }
}
public class Filme 
{
	
   UtilConstrutor ut = new UtilConstrutor();	

   	
   private int codigo;
   private String titulo;
   private String categoria; //Criar em outra classe um enum: AÇÃO, AVENTURA, ERÓTICO, DRAMA, SUSPENSE, TERROR, POLICIAL e etc.
   private String ano_Lancamento;
   private String produtora;
   private String diretor;
   private String midia; //Criar um enum: DVD, BLU-RAY e etc
   
   
   public void setFilme (int cod, String tit, categoria_FIL cat, String ano, String prod, String diret, String mid)
   {
   	  codigo = cod;
   	  titulo = tit;
   	  categoria = cat;
   	  ano_Lancamento = ano;
   	  produtora = prod;
   	  diretor = diret;
   	  midia = mid;
   }
   
   public void mostra_Dados_CadFilme()
   {
   	  ut.saida ("CÓDIGO:      "+codigo+
   	  	        "\nTÍTULO:    "+titulo+
   	  	        "\nCATEGORIA: "+categoria+
   	  	        "\nANO:       "+ano_Lancamento+
   	  	        "\nPRODUTORA: "+produtora+
   	  	        "\nDIRETOR:   "+diretor+
   	  	        "\nMÍDIA:     "+midia);
   }
   
}
public class KAHNLOC

{

public static void main (String[] args)

{
Adicionais adic = new Adicionais();       //Cria o objeto "adic", referente a classe "Adicionais"
  UtilConstrutor ut = new UtilConstrutor(); //Cria o objeto "ut", referente a classe "UtilConstrutor"
  
  Cliente cli = new Cliente();              //Cria o objeto "cli", referente a classe "Cliente"
  Filme fil = new Filme();	      			//Cria o objeto "fil", referente a classe "Filme"
  
  
  
  //INICIO DO CADASTRO DE FILMES
  for (int i = 0; i <= 2; i++)
  {
  
  int codigo = adic.acrescenta();
  String titulo = ut.entrada("DIGITE O TÍTULO DO FILME:");
  adic.categoria categoria = ut.entrada("DIGITE A CATEGORIA:");
  String ano_lanc = ut.entrada ("DIGITE O ANO DE LANÇAMENTO");
  String produtora = ut.entrada("DIGITE A PRODUTORA:");
  String diretor = ut.entrada("DIGITE O NOME DO DIRETOR(A):");
  String midia = ut.entrada("DIGITE O TIPO DE MÍDIA:");
  
  
  
  fil.setFilme (codigo, titulo, categoria, ano_lanc, produtora, diretor, midia);
  
  fil.mostra_Dados_CadFilme ();
  }
  //FIM DO CADASTRO DE FILMES

}
}

7 Respostas

Vmaia

Olá,

Seus atributos, neste caso deveriam ser do mesmo tipo (classe) de tuas enums .

private String categoria; //Criar em outra classe um enum: AÇÃO, AVENTURA, ERÓTICO, DRAMA, SUSPENSE, TERROR, POLICIAL e etc.

deveria ser …

private Categoria  categoria; //Criar em outra classe um enum: AÇÃO, AVENTURA, ERÓTICO, DRAMA, SUSPENSE, TERROR, POLICIAL e etc.

obs.: tente manter o nome das classes e enums com a primeira letra maiuscula. :smiley:

adriano_kahn

tudo bem, más Categoria está na classe Adicionais e como faço para referenciá-la? Você deve ter visto apenas parte do código.

Vmaia

adriano kahn:
tudo bem, más Categoria está na classe Adicionais e como faço para referenciá-la? Você deve ter visto apenas parte do código.

mil perdões… =D

Neste caso … neste caso ao invés de criar uma classe para conter uma enum, crie diretamente a enum …

public enum Categoria { ACAO , AVENTURA , COMEDIA ; }

pois a enum é a própria classe. Para referencia-la vc deve no restante do teu codigo chamar a enum.tipo…

Categoria categoria = Categoria.ACAO;
adriano_kahn

mas eu ja fiz isso também, só que lá na classe KAHNLOC ele não reconhecia o enum. E o que quero é que o campo categoria lá em KAHNLOC só permita eu digitar uma das categorias citadas, pois depois irei fazer um tratamento de erros

Vmaia

Neste caso seria mais aconselhável você utilizar um combo para a seleção de categorias, e este combo seria populado pelas enums.

adriano_kahn

sei o que é combo, mas nunca usei em Java, não faço idéia de como usar. só usei JOPTIONPANE, desculpe a minha ignorância…

Vmaia

No Netbeans na aba de swing deve ter um componente chamado JComboBox… acredito ser ele.

segue link : http://www.guj.com.br/posts/list/111339.java

Criado 19 de maio de 2010
Ultima resposta 19 de mai. de 2010
Respostas 7
Participantes 2