エルビス演算子
Elvis 演算子は、三項演算子構文の短縮形であり、Groovy (英語) 言語で使用されます。三項演算子構文では、次の例に示すように、通常、変数を 2 回繰り返す必要があります。
String name = "Elvis Presley";
String displayName = (name != null ? name : "Unknown");
代わりに、エルビス演算子を使用できます(エルビスの髪型に似ているため)。次の例は、エルビス演算子の使用方法を示しています。
Java
Kotlin
ExpressionParser parser = new SpelExpressionParser();
String name = parser.parseExpression("name?:'Unknown'").getValue(new Inventor(), String.class);
System.out.println(name); // 'Unknown'
val parser = SpelExpressionParser()
val name = parser.parseExpression("name?:'Unknown'").getValue(Inventor(), String::class.java)
println(name) // 'Unknown'
SpEL Elvis オペレーターは、null オブジェクトに加えて、空の文字列もチェックします。元のスニペットは、オペレーターのセマンティクスのエミュレーションに近づいているだけです (追加の !name.isEmpty() チェックが必要になります)。 |
次のリストは、より複雑な例を示しています。
Java
Kotlin
ExpressionParser parser = new SpelExpressionParser();
EvaluationContext context = SimpleEvaluationContext.forReadOnlyDataBinding().build();
Inventor tesla = new Inventor("Nikola Tesla", "Serbian");
String name = parser.parseExpression("name?:'Elvis Presley'").getValue(context, tesla, String.class);
System.out.println(name); // Nikola Tesla
tesla.setName("");
name = parser.parseExpression("name?:'Elvis Presley'").getValue(context, tesla, String.class);
System.out.println(name); // Elvis Presley
val parser = SpelExpressionParser()
val context = SimpleEvaluationContext.forReadOnlyDataBinding().build()
val tesla = Inventor("Nikola Tesla", "Serbian")
var name = parser.parseExpression("name?:'Elvis Presley'").getValue(context, tesla, String::class.java)
println(name) // Nikola Tesla
tesla.setName("")
name = parser.parseExpression("name?:'Elvis Presley'").getValue(context, tesla, String::class.java)
println(name) // Elvis Presley
Elvis 演算子を使用して、式にデフォルト値を適用できます。次の例は、
これは、定義されている場合はシステムプロパティ |