Ajuda com enum

olá devs poderiam me dar ajuda com uma questão da minha atividade???

Crie uma classe chamada Pessoa, que possuirá como atributos um id (long), um nome (String) e o sexo (enum). Adicione à classe Pessoa um construtor que receba o valor inicial do atributo nome e sexo e um construtor padrão (sem argumentos). Em ambos os construtores escreva que o valor inicial do atributo id será definido pelo relógio atual do sistema (usando System.currentTimeMillis() ). Sobrescreva o método toString de Pessoa para retornar o nome da pessoa. Sobrescreva o método equals de Pessoa: duas pessoas serão consideradas iguais se tiverem o mesmo id. Siga as convenções de nomenclatura e visibilidade vistas em sala de aula.

Eu ja fiz grande parte da classe mas n sei como fazer a parte do enum… podem me explicar sobre?

  • Aqui está meu codigo até agora:

public class Pessoa {

private long id;
private String nome;
private enum sexo{f,m};

Pessoa(String nome){
	this.id = System.currentTimeMillis();
	this.nome = nome;
	
}
Pessoa(){
	this.id = System.currentTimeMillis();
}

public long getId() {
	return id;
}
public void setId(long id) {
	this.id = id;
}
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}

public String toString() {
	return nome;
}
public boolean equals(Pessoa p) {
	return id == p.id;
}

}

  • Como fazer get e set e passar ele como parametro para o construtor?

Para o construtor, basta adicionar o parâmetro do tipo do enum, da mesma forma que outros atributos:

private sexo sexoDaPessoa;

public Pessoa(String nome, sexo sx){
	this.id = System.currentTimeMillis();
	this.nome = nome;
        this.sexoDaPessoa = sx;
}

Ao criar uma instância, você precisa prefixar com o tipo do enum:

Pessoa p = new Pessoa("Nome da Pessoa", sexo.m);

Gets e sets funcionam similar à outros tipos:

public sexo getSexo(){
   return this.sexoDaPessoa;
}

public setSexo(sexo sx){
  this.sexoDaPessoa = sx;
}

Obs: para chamar esse enum a partir de outras classes, pode ser necessário torná-lo public.

Abraço.

1 curtida