Elvis 運算子
Elvis 運算子 (?:) 是三元運算子語法的縮寫,用於 Groovy 語言。使用三元運算子語法,您通常需要重複變數兩次,如下面的 Java 示例所示
String name = "Elvis Presley";
String displayName = (name != null ? name : "Unknown");
相反,您可以使用 Elvis 運算子(因其與 Elvis 的髮型相似而得名)。以下示例展示瞭如何在 SpEL 表示式中使用 Elvis 運算子
-
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 運算子還將空字串視為 |
|
從 Spring Framework 7.0 開始,SpEL Elvis 運算子支援 例如,給定表示式 |
以下列表顯示了一個更復雜的示例
-
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 運算子在表示式中應用預設值。以下示例展示瞭如何在
這將注入名為 |