instanceof 和 **.getClass == **.getClass 的区别;

41 阅读1分钟
  • c.getClass() == ArrayList.class:判断传入的集合 c 是否是 ArrayList 类型(或其子类?→ 注意:这里用 == 而非 instanceof,严格判断类型是否完全一致)。

    • 是 ArrayList:直接将 a(源 ArrayList 的底层数组 elementData)赋值给当前 ArrayList 的 elementData避免数组复制,提升性能
    • 不是 ArrayList:通过 Arrays.copyOf(...) 创建一个新的 Object[] 数组,并将 a 中的元素复制进去(确保底层数组类型为 Object[],避免类型转换问题)。