|
此版本仍在开发中,尚未被视为稳定版。如需最新稳定版本,请使用 Spring Framework 7.0.6! |
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 运算符还将empty字符串视作 |
|
从 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 运算符在表达式中应用默认值。以下示例展示了如何在
如果定义了名为 |