Simplify comparison of primitives

Closes gh-23098
This commit is contained in:
Сергей Цыпанов 2019-06-07 19:14:04 +03:00 committed by Sam Brannen
parent e903bf440b
commit e352e9ddaa
2 changed files with 7 additions and 28 deletions

View File

@ -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;

View File

@ -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;
}
}