易截截图软件、单文件、免安装、纯绿色、仅160KB

Java中toArray的用法探究(java数组与list转换)


一.             Incident
import java.util.ArrayList;  
import java.util.List;  
public class Test {  
    public static void main(String[] args) {  
          
        List<String> list = new ArrayList<String>();   
        list.add("1");   
        list.add("2");   
        String[] tt =(String[]) list.toArray(new String[0]);   
    }  
}
 
这段代码是没问题的,但我们看到String[] tt =(String[]) list.toArray(new String[0]) 中的参数很奇怪,然而去掉这个参数new String[0]却在运行时报错。。。
二.             Root Cause Analysis
经研究发现toArray有两个方法:
public Object[] toArray() {  
   Object[] result = new Object[size];     
   System.arraycopy(elementData, 0, result, 0, size);     
   return result;  
}  
不带参数的toArray方法,是构造的一个Object数组,然后进行数据拷贝,此时进行转型就会产生ClassCastException,这也就是上述问题的root cause了。
 
 
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;  
}


相关文档:

java解惑部分好题~~

废话不多说,直接上题目
接下来就是见证奇迹的时刻:请先不要运行代码,猜一下输出的结果:
1.
public class Test1{
    public static void main(String[] args){
        System.out.println(2.0 - 1.1);
    }
}
2.
public class Test2{
&n ......

Java线程同步机制synchronized关键字的理解


Java线程同步机制synchronized关键字的理解
关键字: 线程 synchronized
文章出处:http://tech.it168.com/j/2008-01-30/200801302324557.shtml 
作者:来自ITPUB论坛 
线程同步: 
  由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了 ......

java排序集锦


package sort;   
  
import java.util.Random;   
  
/**  
 * 排序测试类  
 *   
 * 排序算法的分类如下: 1.插入排序(直接插入排序、折半插入排序、希尔排序); 2.交换排序(冒泡泡排序、快速排 ......

回文的java实现(栈和队列的配合)

package com.algrothim.sample.plo;
/**
* @author yuan
*这一个判断一个字符串是否为回文的例子。
*里面借助三个重要的数据结构的知识:
*栈,队列,以及引用。
*此程序的原理是:根据栈的后进先出,以及队列的先进先出的原理。
*两个ADT是同步的,如果从栈出来的字符与从队列出来的字符全部一样,
*说明为 ......

Java Builder 初体验

原创】Java Builder 初体验
2006-10-19 11:43 junziyang
【原创】Java Builder 初体验
MATLAB的最新版本2006b中新添了一个产品-MATLAB Builder for Java。其实本来Matlab就有Java外部程序接口,不过原来的接口只能在.m文件中调用Java,而无法在Java程序中调用Matlab。新的Java Builder为我们在Java程序中调用Matlab丰富 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号