El método getCategory a continuación parece muy redundante y me preguntaba si alguien tiene alguna sugerencia sobre la refacturación para que sea más limpio, posiblemente, utilizando un Enum. Basado en el "val" pasado, necesito getCategory para devolver la instancia de Categoría adecuada de la clase Category. La clase Category es un código JNI generado, por lo que no quiero cambiar eso. ¿Alguien tiene alguna idea?Refactorización del método Java utilizando Enum
Método que se refactorizado:
private Category getCategory(String val) throws Exception{
Category category;
if (val.equalsIgnoreCase("producer")) {
usageCategory = Category.CATEGORY_PRODUCER;
} else if (val.equalsIgnoreCase("meter")) {
usageCategory = Category.CATEGORY_METER;
} else if (val.equalsIgnoreCase("consumer")) {
usageCategory = Category.CATEGORY_CONSUMER;
} else {
throw new Exception("Invalid value: " + val);
}
return usageCategory;
}
Category.java: generada JNI (no puede cambiar esto):
public final class Category {
public final static Category CATEGORY_PRODUCER = new Category("CATEGORY_PRODUCER", SampleJNI.CATEGORY_PRODUCER_get());
public final static Category CATEGORY_METER = new Category("CATEGORY_METER", SampleJNI.CATEGORY_METER_get());
public final static Category CATEGORY_CONSUMER = new Category("CATEGORY_CONSUMER", SampleJNI.CATEGORY_CONSUMER_get());
}
IMO, su método es bastante limpio en este momento, es un método simple de fábrica. A menos que necesite un método como este en muchas otras clases, no le recomendaré que dedique tiempo a mejorar este método. –