以下の getCategory メソッドは非常に冗長なようです。おそらく Enum を使用してクリーンにするためにリファクタリングすることについて誰か提案があるかどうか疑問に思っていました。渡された「val」に基づいて、Category クラスから適切な Category インスタンスを返すには getCategory が必要です。Category クラスは生成された JNI コードなので、変更したくありません。誰にもアイデアはありますか?
リファクタリングするメソッド:
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: 生成された JNI (これは変更できません):
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());
}