true または false の 2 つの値しか持てない String パラメーター (アップロード) を受け取るメソッドがあります。コンパイル時にこのメソッドに正しい値が渡されることを確認する方法はありますか? 私は列挙型で試しましたが、実行時チェックまで取得しました:
public static enum eTrueFalse {TRUE, FALSE};
...
public Result loadSDP(String sdpFile, String name, String upload){
StringBuilder sbOptionalParameters = new StringBuilder();
if (upload != null){
if (isTrueFalse(upload)){
sbOptionalParameters.append(" --upload ");
sbOptionalParameters.append(upload);
} else {
throw new IllegalArgumentException("The 'upload' parameter takes only 'true' or 'false' value. Cannot handle: "
+ upload);
}
}
...
}
private boolean isTrueFalse(String st) {
for(eTrueFalse tf : eTrueFalse.values()){
if(tf.name().equalsIgnoreCase(st)){
return true;
}
}
return false;
}
もちろん、この質問は、2 つ以上の定義済みの値を持つパラメーターを持つメソッドにも当てはまります。
実行には非常に時間がかかるため、コンパイル時にチェックしたいと考えています。早めにチェックしておいてよかったです。任意のポインタをいただければ幸いです。
編集: より一般的な解決策を探していたときに、ブール値(またはブール値)で簡単に解決できるため、上記の例は良いものではありませんでした。これは(うまくいけば)より良い例です。私は列挙型を持っています:
public enum MEDIA_TYPE {XML, JSON};
そしてそれを取るメソッド:
public ClientResponse get(String address, String user,
String password, MEDIA_TYPE mediaType) {
...
return webResource.queryParams(new
MultivaluedMapImpl()).accept(mediaType).get(ClientResponse.class);
}
上記の問題は、accept メソッドが String を受け取るため、enum を String に変換する必要があることです。最善のアプローチは何ですか?スイッチステートメント?enum クラスにコンストラクターとゲッターを追加しますか? 他の?