此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Framework 6.2.10! |
Varargs 调用
以下示例显示了如何调用java.lang.String#formatted(Object…)
varargs 方法,通过提供变量参数列表作为单独的
参数 ('blue', 1
).
-
Java
-
Kotlin
// evaluates to "blue is color #1"
String expression = "'%s is color #%d'.formatted('blue', 1)";
String message = parser.parseExpression(expression).getValue(String.class);
// evaluates to "blue is color #1"
val expression = "'%s is color #%d'.formatted('blue', 1)"
val message = parser.parseExpression(expression).getValue(String::class.java)
变量参数列表也可以作为数组提供,如
以下示例 (new Object[] {'blue', 1}
).
-
Java
-
Kotlin
// evaluates to "blue is color #1"
String expression = "'%s is color #%d'.formatted(new Object[] {'blue', 1})";
String message = parser.parseExpression(expression).getValue(String.class);
// evaluates to "blue is color #1"
val expression = "'%s is color #%d'.formatted(new Object[] {'blue', 1})"
val message = parser.parseExpression(expression).getValue(String::class.java)
作为替代方案,可以将变量参数列表作为java.util.List
–为
示例,作为内联列表
({'blue', 1}
).以下示例演示了如何执行此作。
-
Java
-
Kotlin
// evaluates to "blue is color #1"
String expression = "'%s is color #%d'.formatted({'blue', 1})";
String message = parser.parseExpression(expression).getValue(String.class);
// evaluates to "blue is color #1"
val expression = "'%s is color #%d'.formatted({'blue', 1})"
val message = parser.parseExpression(expression).getValue(String::class.java)
Varargs 类型转换
与Java中对varargs调用的标准支持相比,类型转换可能是 在调用 varargs 构造函数、方法或 SpEL 中的函数。
例如,如果我们在EvaluationContext
在名称下#reverseStrings
对于具有签名的方法String reverseStrings(String… strings)
,我们可以在 SpEL 中调用该函数
表达式,其中包含任何可以转换为String
,如
以下示例。
-
Java
-
Kotlin
// evaluates to "3.0, 2.0, 1, SpEL"
String expression = "#reverseStrings('SpEL', 1, 10F / 5, 3.0000)";
String message = parser.parseExpression(expression)
.getValue(evaluationContext, String.class);
// evaluates to "3.0, 2.0, 1, SpEL"
val expression = "#reverseStrings('SpEL', 1, 10F / 5, 3.0000)"
val message = parser.parseExpression(expression)
.getValue(evaluationContext, String::class.java)
类似地,任何组件类型是所需 varargs 类型的子类型的数组都可以
作为 varargs 调用的变量参数列表提供。例如,一个String[]
数组可以提供给接受Object…
参数列表。
以下列表表明我们可以提供String[]
数组添加到java.lang.String#formatted(Object…)
varargs 方法。它还强调1
将自动转换为"1"
.
-
Java
-
Kotlin
// evaluates to "blue is color #1"
String expression = "'%s is color #%s'.formatted(new String[] {'blue', 1})";
String message = parser.parseExpression(expression).getValue(String.class);
// evaluates to "blue is color #1"
val expression = "'%s is color #%s'.formatted(new String[] {'blue', 1})"
val message = parser.parseExpression(expression).getValue(String::class.java)