[RESOLVIDO] Modificadores de acesso no Enum

5 respostas
S

Então galera, quando eu uso modificador public o eclipse reclama que para usar esse modificador no meu enum eu teria que fazer um próprio arquivo para ele, ja quando deixo default compila de boa

public class Cliente {

	
public String nome;

int matricula;
	
public Cliente(String nome, int matricula) {
	this.nome = nome;
	this.matricula = matricula;

}
	
}


enum SexoCliente {
	
	MASCULINO, FEMININO;
}

aproveitando o espaço, não é possivel usar modificador private em enum não né
sei que é uma duvida meio besta, até entendo o pq mais ou menos, mas só queria que vcs me dessem aquela esclarecida

valeu

5 Respostas

M

Você criou seu enum como inner class?

se sim é por isso que só compila como default.

gomesrod

Oi,

Qualquer classe public deve estar em seu próprio arquivo, quer dizer, um arquivo com o nome da classe. Para enums vale a mesma regra.

E sobre a outra pergunta, ele só pode ser private caso esteja declarado como inner class.

caio.ribeiro.pereira

Uma boa prática para enums é criar separadamente de uma classe

E no seu caso poderia ficar assim

Arquivo SexoCliente.java

public enum SexoCliente{
     MASCULINO, FEMININO;
}

Arquivo Cliente.java

public class Cliente {
    private String nome;
    private SexoCliente sexo;
    private int matricula;

    public Cliente(String nome, SexoCliente sexo, int matricula){
           this.nome = nome;
           this.sexo = sexo;
           this.matricula = matricula;
    }

    ...... getters e setters
}

Creio que dessa forma você não terá problemas em reutilizar o enum SexoCliente em outras classes. :smiley:

Lucas_Abbatepaolo

Enum é como uma classe, sendo assim não é possivel ter 2 classes publicas dentro do mesmo arquivo.

não entendi direito a pergunta entao vou responder pelas minhas 3 interpretações:

public enum Sexo { //classes não podem ser declaradas como private o mesmo vale para o enum

    M("Masculino"), F("Feminino"); // aqui é por defaul public static final sendo assim não pode utilizar private

    private String descricao; //aqui pode-se utilizar private

    private Sexo(String descricao) { //o construtor tem que ser private
      this.descricao = descricao;
    }
  }
caio.ribeiro.pereira

Enum é uma classe de Constantes do Java, e dentro de um mesmo arquivo é possível ter duas classes porém a principal pode ser publica e a secundária é apenas interna da classe principal.

Criado 21 de novembro de 2011
Ultima resposta 22 de nov. de 2011
Respostas 5
Participantes 5