11[[expressions-operator-elvis]]
22= The Elvis Operator
33
4- The Elvis operator is a shortening of the ternary operator syntax and is used in the
5- https://www.groovy-lang.org/operators.html#_elvis_operator[Groovy] language. With the
6- ternary operator syntax, you often have to repeat a variable twice, as the following
7- Java example shows:
4+ The Elvis operator (`?:`) is a shortening of the ternary operator syntax and is used in
5+ the https://www.groovy-lang.org/operators.html#_elvis_operator[Groovy] language. With the
6+ ternary operator syntax, you often have to repeat a variable twice, as the following Java
7+ example shows:
88
99[source,java,indent=0,subs="verbatim,quotes"]
1010----
2323----
2424 ExpressionParser parser = new SpelExpressionParser();
2525
26- String name = parser.parseExpression("name?: 'Unknown'").getValue(new Inventor(), String.class);
26+ String name = parser.parseExpression("name ?: 'Unknown'").getValue(new Inventor(), String.class);
2727 System.out.println(name); // 'Unknown'
2828----
2929
@@ -33,7 +33,7 @@ Kotlin::
3333----
3434 val parser = SpelExpressionParser()
3535
36- val name = parser.parseExpression("name?: 'Unknown'").getValue(Inventor(), String::class.java)
36+ val name = parser.parseExpression("name ?: 'Unknown'").getValue(Inventor(), String::class.java)
3737 println(name) // 'Unknown'
3838----
3939======
@@ -58,11 +58,11 @@ Java::
5858 EvaluationContext context = SimpleEvaluationContext.forReadOnlyDataBinding().build();
5959
6060 Inventor tesla = new Inventor("Nikola Tesla", "Serbian");
61- String name = parser.parseExpression("name?: 'Elvis Presley'").getValue(context, tesla, String.class);
61+ String name = parser.parseExpression("name ?: 'Elvis Presley'").getValue(context, tesla, String.class);
6262 System.out.println(name); // Nikola Tesla
6363
6464 tesla.setName("");
65- name = parser.parseExpression("name?: 'Elvis Presley'").getValue(context, tesla, String.class);
65+ name = parser.parseExpression("name ?: 'Elvis Presley'").getValue(context, tesla, String.class);
6666 System.out.println(name); // Elvis Presley
6767----
6868
@@ -74,11 +74,11 @@ Kotlin::
7474 val context = SimpleEvaluationContext.forReadOnlyDataBinding().build()
7575
7676 val tesla = Inventor("Nikola Tesla", "Serbian")
77- var name = parser.parseExpression("name?: 'Elvis Presley'").getValue(context, tesla, String::class.java)
77+ var name = parser.parseExpression("name ?: 'Elvis Presley'").getValue(context, tesla, String::class.java)
7878 println(name) // Nikola Tesla
7979
8080 tesla.setName("")
81- name = parser.parseExpression("name?: 'Elvis Presley'").getValue(context, tesla, String::class.java)
81+ name = parser.parseExpression("name ?: 'Elvis Presley'").getValue(context, tesla, String::class.java)
8282 println(name) // Elvis Presley
8383----
8484======
0 commit comments