集合投影

投影允許集合驅動子表示式的求值,結果是一個新的集合。投影的語法是 .![projectionExpression]。例如,假設我們有一個發明家列表,但我們想知道他們出生的城市列表。實際上,我們想對發明家列表中的每個條目求值 placeOfBirth.city。以下示例使用投影來實現這一點

  • Java

  • Kotlin

// evaluates to ["Smiljan", "Idvor"]
List placesOfBirth = parser.parseExpression("members.![placeOfBirth.city]")
		.getValue(societyContext, List.class);
// evaluates to ["Smiljan", "Idvor"]
val placesOfBirth = parser.parseExpression("members.![placeOfBirth.city]")
 		.getValue(societyContext) as List<*>

投影支援陣列以及實現 java.lang.Iterablejava.util.Map 的任何型別。當使用 Map 進行投影時,投影表示式將針對 Map 中的每個條目(表示為 Java Map.Entry)進行求值。對 Map 進行投影的結果是一個列表,該列表由針對每個 Map 條目求值投影表示式的結果組成。

Spring 表示式語言還支援集合投影的安全導航。