阅读kvstore\ArrayWrappers.java(2)
forArray的具体代码:
@SuppressWarnings("unchecked")
public static Comparable<Object> forArray(Object a) {
Preconditions.checkArgument(a.getClass().isArray()); //先检查保证这个Object一定是一个java数组 []
Comparable<?> ret;
if (a instanceof int[]) { // 如果是对应类型的数组,调用对应的封装函数将object 封装成 Comparable<Object>
ret = new ComparableIntArray((int[]) a);
} else if (a instanceof long[]) {
ret = new ComparableLongArray((long[]) a);
} else if (a instanceof byte[]) {
ret = new ComparableByteArray((byte[]) a);
} else {
Preconditions.checkArgument(!a.getClass().getComponentType().isPrimitive());
ret = new ComparableObjectArray((Object[]) a);
}
return (Comparable<Object>) ret;
}
封装了int, long, byte有专门的封装函数, 然后其他的类型就跑到 else分支了。
else 检查参数一定不能是java 基础类型,那就是说如果碰到浮点数就抛异常了?
浙公网安备 33010602011771号