1
mirror of https://github.com/CarmJos/EasyConfiguration.git synced 2026-06-04 18:48:20 +08:00

fix(parse): 修复Number基础类型转型丢失的问题。 fix #17

This commit is contained in:
2022-12-06 21:53:05 +08:00
parent ccd239ad6b
commit 6f97166192
10 changed files with 92 additions and 91 deletions
@@ -50,6 +50,23 @@ public interface ConfigValueParser<T, R> {
@Contract(pure = true)
static <V> @NotNull ConfigValueParser<Object, V> castObject(Class<V> valueClass) {
return (input, defaultValue) -> {
if (Number.class.isAssignableFrom(valueClass)) {
if (Long.class.isAssignableFrom(valueClass)) {
input = longValue().parse(input, null);
} else if (Integer.class.isAssignableFrom(valueClass)) {
input = intValue().parse(input, null);
} else if (Float.class.isAssignableFrom(valueClass)) {
input = floatValue().parse(input, null);
} else if (Double.class.isAssignableFrom(valueClass)) {
input = doubleValue().parse(input, null);
} else if (Byte.class.isAssignableFrom(valueClass)) {
input = byteValue().parse(input, null);
} else if (Short.class.isAssignableFrom(valueClass)) {
input = shortValue().parse(input, null);
}
}
if (valueClass.isInstance(input)) return valueClass.cast(input);
else throw new IllegalArgumentException("Cannot cast value to " + valueClass.getName());
};