阅读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 基础类型,那就是说如果碰到浮点数就抛异常了?

posted @ 2019-09-17 16:13  瑶来瑶去  阅读(101)  评论(0)    收藏  举报