Refatoração - condicional, Enum

1 resposta
R

Uma classe possui como um de seus atributos um Enum.
Para setar esse Enum dependo de uma String. Se ela for igual à um dos objetos de determinado Enum, esse será atribuido ao atributo da classe.
Como posso refatorar o codigo abaixo que contém um ‘for’ para cada classe Enum?

public void setTipo(String s) {
		
		for (MeuEnum1 e : MeuEnum1.values()) {
			if (e.name().equalsIgnoreCase(s))
				this.tipo = e;
		}
		for (MeuEnum2 e : MeuEnum2.values()) {
			if (e.name().equalsIgnoreCase(s))
				this.tipo = e;
		}
                for ...

Agradeço a ajuda

1 Resposta

nel

Oi,

costumo criar Enum assim:

package com.totvs.test;

public class Test {
	public static void main(String[] args) {
		Cerveja cerva = Cerveja.getEnumByDescription("Skol");
		System.out.println(cerva.getCode());
	}
}

enum Cerveja {
	SKOL(1, "Skol"),

	BRAHMA(2, "Brahma");

	private Cerveja(int code, String description) {
		this.code = code;
		this.description = description;
	}

	private int code;
	private String description;

	public int getCode() {
		return code;
	}

	public void setCode(int code) {
		this.code = code;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}
	
	public static Cerveja getEnumByDescription(String description) {
		for (Cerveja cerveja : Cerveja.values()) {
			if (cerveja.getDescription().equalsIgnoreCase(description))
				return cerveja;
		}
		throw new IllegalArgumentException("Descrição " + description + " inexistente.");
	}
}

Uma forma útil, no meu ponto de vista.

Criado 3 de novembro de 2011
Ultima resposta 3 de nov. de 2011
Respostas 1
Participantes 2