From e2ccd55d146c245ee3e6d46783e3c288999894ff Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Sun, 10 Jun 2018 23:56:32 +0200 Subject: [PATCH] ReflectivePropertyAccessor uses computeIfAbsent for cache computation Issue: SPR-16882 --- .../spel/support/ReflectivePropertyAccessor.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java b/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java index b49cf9e30b..4f75bae875 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java @@ -436,13 +436,11 @@ public class ReflectivePropertyAccessor implements PropertyAccessor { * Return class methods ordered with non-bridge methods appearing higher. */ private Method[] getSortedMethods(Class clazz) { - Method[] methods = this.sortedMethodsCache.get(clazz); - if (methods == null) { - methods = clazz.getMethods(); + return this.sortedMethodsCache.computeIfAbsent(clazz, key -> { + Method[] methods = key.getMethods(); Arrays.sort(methods, (o1, o2) -> (o1.isBridge() == o2.isBridge() ? 0 : (o1.isBridge() ? 1 : -1))); - this.sortedMethodsCache.put(clazz, methods); - } - return methods; + return methods; + }); } /**