`

java中toArray用法注意事项

阅读更多

 java中toArray正确用法有三种,toArray方法都需要带参数:

    public static String[] vectorToArray1(Vector<String> v) {

        String[] newText = new String[v.size()];

        v.toArray(newText);

        return newText;

    }

    

    public static String[] vectorToArray2(Vector<String> v) {

        String[] newText = (String[])v.toArray(new String[0]);

        return newText;

    }

    

    public static String[] vectorToArray3(Vector<String> v) {

        String[] newText = new String[v.size()];

        String[] newStrings = (String[])v.toArray(newText);

        return newStrings;

 

    }

而不带参数的toArray()是不行的,运行时会报ClassCastException异常:

    public static String[] vectorToArray4(Vector<String> v) {

        String[] newText = (String[])v.toArray();

        return newText;

    }

 

    原因分析:

    toArray有两个方法:

  public Object[] toArray() {

  Object[] result = new Object[size];

  System.arraycopy(elementData, 0, result, 0, size);

  return result;

  }

  public Object[] toArray(Object a[]) {

      if (a.length < size)

  a = (Object[])java.lang.reflect.Array.newInstance(a.getClass().getComponentType(), size);

      System.arraycopy(elementData, 0, a, 0, size);

  if (a.length > size)

      a[size] = null;

      return a;

  }

不带参数的方法,构造并返回一个Object数组对象,这时候向下转型为String数组对象,导致类型不兼容,报错。

   而带参数的方法,构造的数组对象类型和参数的类型一致,故不存在转型。

 

出处 : http://ocre.iteye.com/blog/1354264

分享到:
评论

相关推荐

    java中ArrayList的用法

    #### 九、其他注意事项 1. **TrimToSize()方法**:该方法可以将`ArrayList`的容量调整为其实际大小,这对于释放不再需要的内存空间很有帮助。 2. **toArray()方法**:用于将`ArrayList`转换为数组。注意,如果`...

    Java ArrayList.toArray(T[]) 方法的参数类型是 T 而不是 E的原因分析

    Java ArrayList 类中的 `toArray(T[])` 方法的参数类型使用 `T` 而不是 `E`,这在初看之下似乎违背了泛型的主要目的——提供类型安全。然而,这样的设计实则是为了增加代码的灵活性和实用性。让我们深入探讨一下其中...

    Java编程中常见的坑

    `subList`的使用注意事项 `List.subList()`方法用于获取列表的一个视图。需要注意的是,这个视图与原始列表是关联的,任何对视图的修改都会影响到原始列表,反之亦然。因此,在处理`subList`时需要格外小心,尤其...

    java List、Set与Array之间的相互转换

    4. **注意事项** - 在转换过程中,需要注意数据类型的一致性。例如,如果你的数组或集合包含自定义对象,那么在转换时需要考虑对象的`equals()`和`hashCode()`方法,以确保Set能正确识别重复元素。 - 当从List...

    使用循环操作Java中的数组共3页.pdf.zip

    10. **注意事项**: - 数组长度不可变,一旦创建,大小就不能更改。 - 数组越界是常见的错误,需要确保索引值在有效范围内。 以上内容只是对Java中使用循环操作数组的一个基本概述,实际的PDF文档可能会包含更...

    java中数组列表ArrayList的使用[归类].pdf

    6. **注意事项** - ArrayList的性能主要取决于其容量管理。当添加新元素导致容量不足时,ArrayList会自动扩大容量,这可能导致一定的性能开销。 - 对于频繁的插入和删除操作,考虑使用`LinkedList`,因为它在这些...

    java ArrayList的使用与分析

    7. **注意事项** - 当 ArrayList 的容量不足时,它会自动扩容,但可能会造成不必要的内存分配和拷贝。因此,在创建 ArrayList 时可以预估其大小,以减少扩容操作。 - 不要尝试通过索引越界访问 ArrayList,这会...

    详解Java如何在Array和List之间进行转换.rar

    总结,Java中Array和List之间的转换主要依赖于Arrays类的asList()方法、ArrayList的toArray()方法以及Java 8引入的Stream API。理解这些转换方式及其适用场景,能够帮助我们在编程中更灵活地处理数据结构,提高代码...

    Java中数组与集合的相互转换实现解析

    Java中数组与集合的相互转换实现解析 Java中数组和集合是两种不同的数据结构,数组是一种固定长度的数据结构,而集合是一种可变长度的数据结构。...但是需要注意在使用这些方法时的注意事项,以免出现异常。

    第16章:Java集合.zip_java 集合_java集合

    本章内容主要围绕Java集合框架展开,包括ArrayList、LinkedList、HashSet、HashMap等常见数据结构的使用方法及其特点。 1. **集合接口**: - `Collection`:所有单值容器的根接口,包括List、Set等子接口。 - `...

    Java和C#通过DES加密得到相同数据

    标题“Java和C#通过DES加密得到相同...总结起来,标题和描述中的知识点涵盖了DES加密算法的基础知识,以及在Java和C#中实现相同加密结果的关键步骤和注意事项。理解和掌握这些内容对于跨平台的数据安全通信至关重要。

    list转换成string数组

    ### 三、注意事项 - **数组长度**:当使用`new String[list.size()]`创建数组时,确保列表中的元素数量与数组长度一致,避免出现数组越界的问题。 - **性能考虑**:在转换过程中,尽量减少不必要的对象创建,尤其是...

    Java-多线程异步请求统一响应结果.docx

    #### 注意事项 1. `Thread.sleep(3000)`仅用于模拟耗时操作,在实际应用中应替换为真实的业务逻辑。 2. `future.get()`方法会阻塞主线程直到得到结果。如果需要避免主线程阻塞,可以使用`future.get(timeout, unit)...

    Java 在 Array 和 Set 之间进行转换的示例.rar

    3. **注意事项:** - **数据丢失**:当从Array转换到Set时,如果Array中有重复元素,Set会自动去除重复,因为Set不允许重复元素。 - **类型安全**:在进行转换时,确保源类型和目标类型匹配,否则可能会出现...

    java类型转换大全

    以上内容仅是"java类型转换大全"的一部分精华,详细资料可能还包括各种转换的特殊情况、注意事项以及最佳实践。这份资源对于Java初学者和有经验的开发者来说都是一个宝贵的参考资料,有助于理解和应用Java中的类型...

    Java Arrays工具类用法详解

    4. 使用Arrays类的注意事项 在使用Arrays类时,需要注意以下几点: * Arrays类中的方法均为static修饰的,可以直接通过Arrays.xxx(xxx)的形式调用方法。 * asList(T... a)方法返回的List对象,是由所给的数组a来...

    Java中JSON字符串与java对象的互换实例详解

    可以使用`JSONObject.toBean()`或`JSONArray.toArray()`方法将JSONObject或JSONArray转换为对应的Java对象或数组对象。 7. 注意事项: 当使用OCR技术提取文档内容时,可能会出现字识别错误或漏识别的情况,需要...

    HashSet类的用法.pdf

    #### 四、注意事项 - 在使用`HashSet`时需要注意,由于它是基于哈希表实现的,因此对于元素的添加、删除等操作的时间复杂度通常为O(1)。 - 如果需要线程安全的集合,可以使用`Collections.synchronizedSet()`方法...

Global site tag (gtag.js) - Google Analytics