不確定這在 JAVA 中是否可行,也不知道它叫什么,所以我不確定要尋找什么,但如果可能的話,我真的想在我的邏輯中實作相同的。我知道我們可以替換值,但如何替換我不確定的變數。
public interface Constants {
GENDER_${MALE} = "where Gender = 'MALE' ";
GENDER_${FEMALE} = "where Gender = 'FEMALE' ";
}
public class Impl {
System.out.println(Constants.GENDER_MALE);
}
Expected O/P : where Gender = 'MALE';
我只是不想使用 if else 條件,如果男性然后回傳男性特定的 where 子句 else 女性..因為在實際代碼中幾乎有 30-35 個 if else 條件,如果可能的話,只想減少它。
uj5u.com熱心網友回復:
您可以在 Map 中放置 where 運算式,其中 key 是您的變數可能值,例如:
HashMap<String, String> whereMap = new HashMap<>();
whereMap.put("MALE", "where Gender = 'MALE' ");
whereMap.put("FEMALE", "where Gender = 'FEMALE' ");
而不是使用條件通過鍵值檢索來進行替換:
String varr = "MALE";
System.out.println(MessageFormat.format("SELECT * FROM EMP {0}", whereMap.get(varr)));
uj5u.com熱心網友回復:
public enum Gender {
FEMALE, MALE;
public String where() {
return "where Gender = '" this "' ";
}
}
String s = Gender.MALE.where();
因為這可能是大規模建模的嘗試:
public static <T extends Enum<T>> String where(T value) {
return "where Gender = '" value "' ";
}
不要期望從這一切中得到太多結果。
uj5u.com熱心網友回復:
不可能這個詞不是為我定義的。
方法一
做一個這樣的班級,
class Constants {
public String MALE = "where Gender = 'MALE' ";
public String FEMALE = "where Gender = 'FEMALE' ";
public static String GENDER_(String $argument){
Constants constants = new Constants();
try {
Field field = constants.getClass().getField($argument);
return (String) field.get($GENDER);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
return null;
}
}
}
然后像這樣使用它,
String $GENDER; // This is your argument, either take it from the user.
System.out.println(Constants.GENDER_($GENDER));
這將完全符合您的要求。是的,我們在這里沒有使用任何邏輯(if-else)。
注意:Constants.GENDER_($GENDER)如果引數不是中的欄位,將回傳 nullConstants
方法二
使用 aMap而不是創建場。像這樣,
Map<String,String> fields = new HashMap<>();
fields.put("MALE","where Gender = 'MALE'");
fields.put("FEMALE","where Gender = 'FEMALE'");
然后像這樣使用那個地圖,
String $GENDER; // Your argument.
System.out.println(fields.get($GENDER));
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/377461.html
