From e352e9ddaae1726a95c4ecc5d09cbea5d5bf90ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=A6=D1=8B=D0=BF?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Fri, 7 Jun 2019 19:14:04 +0300 Subject: [PATCH] Simplify comparison of primitives Closes gh-23098 --- .../ReflectiveConstructorResolver.java | 4 +-- .../spel/support/StandardTypeComparator.java | 31 +++---------------- 2 files changed, 7 insertions(+), 28 deletions(-) diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveConstructorResolver.java b/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveConstructorResolver.java index 667e4c18b80..82a307f6b9c 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveConstructorResolver.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveConstructorResolver.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2019 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -62,7 +62,7 @@ public class ReflectiveConstructorResolver implements ConstructorResolver { Arrays.sort(ctors, (c1, c2) -> { int c1pl = c1.getParameterCount(); int c2pl = c2.getParameterCount(); - return (c1pl < c2pl ? -1 : (c1pl > c2pl ? 1 : 0)); + return Integer.compare(c1pl, c2pl); }); Constructor closeMatch = null; diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/support/StandardTypeComparator.java b/spring-expression/src/main/java/org/springframework/expression/spel/support/StandardTypeComparator.java index 94b5b25d57d..e2e6d11c7f9 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/support/StandardTypeComparator.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/support/StandardTypeComparator.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2019 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -83,20 +83,16 @@ public class StandardTypeComparator implements TypeComparator { return leftBigInteger.compareTo(rightBigInteger); } else if (leftNumber instanceof Long || rightNumber instanceof Long) { - // Don't call Long.compare here - only available on JDK 1.7+ - return compare(leftNumber.longValue(), rightNumber.longValue()); + return Long.compare(leftNumber.longValue(), rightNumber.longValue()); } else if (leftNumber instanceof Integer || rightNumber instanceof Integer) { - // Don't call Integer.compare here - only available on JDK 1.7+ - return compare(leftNumber.intValue(), rightNumber.intValue()); + return Integer.compare(leftNumber.intValue(), rightNumber.intValue()); } else if (leftNumber instanceof Short || rightNumber instanceof Short) { - // Don't call Short.compare here - only available on JDK 1.7+ - return compare(leftNumber.shortValue(), rightNumber.shortValue()); + return leftNumber.shortValue() - rightNumber.shortValue(); } else if (leftNumber instanceof Byte || rightNumber instanceof Byte) { - // Don't call Short.compare here - only available on JDK 1.7+ - return compare(leftNumber.byteValue(), rightNumber.byteValue()); + return leftNumber.byteValue() - rightNumber.byteValue(); } else { // Unknown Number subtypes -> best guess is double multiplication @@ -116,21 +112,4 @@ public class StandardTypeComparator implements TypeComparator { throw new SpelEvaluationException(SpelMessage.NOT_COMPARABLE, left.getClass(), right.getClass()); } - - private static int compare(long x, long y) { - return (x < y ? -1 : (x > y ? 1 : 0)); - } - - private static int compare(int x, int y) { - return (x < y ? -1 : (x > y ? 1 : 0)); - } - - private static int compare(short x, short y) { - return x - y; - } - - private static int compare(byte x, byte y) { - return x - y; - } - }