私はJava Enumを使用するのが初めてで、文字列リテラルを比較するIFロジックを置き換えることを読んでいます。私は下のコードをEnumと置き換える方法を全く理解していません。 applyEQに渡されるcol値に基づいて、私はその値の次のメソッド呼び出しをベースにする必要があります。私は可能な値を事前にcolの値を知っていると私は今の定数ファイルを使用しています。列挙型を作成し、それを定数ファイルのインターフェイスに配置する必要がありますか?文字列リテラルを置換する/ elseIfブロックがEnumである場合
public class FilterHelper implements IFilterHelper {
private final EQuery eQuery;
public FilterHelper(EQuery query) {
eQuery = query;
}
@Override
public void applyEQ(String col, String val) throws Exception {
int return = 0;
if (col.equalsIgnoreCase(EConstants.NAME)) {
ret = Sample.addName(eQuery, val);
} else if (col.equalsIgnoreCase(EConstants.KEYWORDS)) {
ret = Sample.addKey(eQuery, val);
} else if (col.equalsIgnoreCase(EConstants.ROLE)) {
ret = Sample.addRole(eQuery, val);
}
if (return != 0) {
throw new Exception("failed");
}
}
}
EConstants.java
public final class EConstants {
public static final String NAME = "cewName";
public static final String KEYWORDS = "cewKeywords";
public static final String ROLE = "cewRole";
}
'EConstants'をEnumクラスに変換すると、String比較の代わりに' switch/case'を使うことができます。 – anubhava
java7では文字列にswitch \ caseを使うことができます:http://javarevisited.blogspot.com/2011/08/string-switch-case-jdk7-example.html – shem
私はJava 6を使用しています。ちょうどfyi – c12