次のコードを簡素化しようとしています。
コードで実行する基本的な手順は次のとおりです。
簡単な例は次のとおりです。
String temp = System.getProperty("XYZ");
String result = "default";
if(temp != null && !temp.isEmpty()){
result = temp;
}
三項演算子を使用して別の試みをしました:
String temp;
String result = isNotNullOrEmpty(temp = System.getProperty("XYZ")) ? temp : "default";
IsNotNullOrEmpty()メソッド
private static boolean isNotNullOrEmpty(String str){
return (str != null && !str.isEmpty());
}
このすべてをインラインで行うことは可能ですか?私は次のようなことができることを知っています:
String result = isNotNullOrEmpty(System.getProperty("XYZ")) ? System.getProperty("XYZ") : "default";
ただし、同じメソッドを2回呼び出しています。私はこのようなことをしたいのですが(うまくいきません):
String result = isNotNullOrEmpty(String temp = System.getProperty("XYZ")) ? temp : "default";
同じ行内で 'temp'文字列を初期化したい。これは可能ですか?または私は何をすべきですか?
ご提案ありがとうございます。
ティム
私は質問が本当に古いことを知っていますが、ジェネリックを使用すると、より一般化されたメソッドを追加して、すべてのタイプで機能します。
public static <T> T getValueOrDefault(T value, T defaultValue) {
return value == null ? defaultValue : value;
}
Java 8 Optional
(フィルター不要)を使用:
public static String orElse(String defaultValue) {
return Optional.ofNullable(System.getProperty("property")).orElse(defaultValue);
}
Org.Apache.commons.lang3.StringUtilsを使用します
String emptyString = new String();
result = StringUtils.defaultIfEmpty(emptyString, "default");
System.out.println(result);
String nullString = null;
result = StringUtils.defaultIfEmpty(nullString, "default");
System.out.println(result);
上記のオプションの両方が印刷されます:
default
default
おそらく次のような簡単な方法が必要なようです。
public String getValueOrDefault(String value, String defaultValue) {
return isNotNullOrEmpty(value) ? value : defaultValue;
}
次に:
String result = getValueOrDefault(System.getProperty("XYZ"), "default");
この時点では、必要temp
...ではありません。一時変数を初期化する方法としてメソッドパラメーターを効果的に使用しました。
実際にがtemp
を必要とし、追加のメソッドが必要ない場合は、canを1つのステートメントで実行しますが、実際にはそうしません。
public class Test {
public static void main(String[] args) {
String temp, result = isNotNullOrEmpty(temp = System.getProperty("XYZ")) ? temp : "default";
System.out.println("result: " + result);
System.out.println("temp: " + temp);
}
private static boolean isNotNullOrEmpty(String str) {
return str != null && !str.isEmpty();
}
}
org.Apache.commons.lang libraryのObjectUtils
クラスでこのメソッドを使用できます:
public static <T> T defaultIfNull(T object, T defaultValue)