Il metodo getCategory di seguito sembra molto ridondante e mi chiedevo se qualcuno avesse qualche suggerimento sul refactoring per renderlo più pulito possibilmente utilizzando un Enum. Sulla base del "val" passato, ho bisogno di getCategory per restituire l'istanza di categoria appropriata dalla classe Category. La classe Category è generata dal codice JNI, quindi non voglio cambiarlo. Qualcuno ha qualche idea?Refactoring del metodo Java con Enum
Metodo da riscritta:
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: Generated JNI (non può cambiare questo):
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, il tuo metodo è abbastanza pulito in questo momento, è un semplice metodo di fabbrica. A meno che non abbiate bisogno di un metodo come questo in molte altre classi, non vi suggerirò di dedicare del tempo a migliorare questo metodo. –