易截截图软件、单文件、免安装、纯绿色、仅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;  
}


相关文档:

认清JavaScript和JAVA全局变量和局部变量的作用域

认清JavaScript和JAVA全局变量和局部变量的作用域
2010年2月28日 george 发表评论 阅读评论
通过淘宝面试题来认清JavaScript和JAVA全局变量和局部变量的作用域
注意两者是有严重区别的!
var a = 100;
function testResult(){
  var b = 2 * a;
  var a = 200;
  var c = a / 2 ......

Java语言基础学习

      一直觉得所有的语言中Java是最好的,就开始学了起来。希望记下这些,对自己和以后的学习者有帮助!当然这只是我个人的一点学习感悟,大牛到此可绕过,如有看法,不吝赐教。
      一门语言基本的逻辑结构和类型基本是一样的。所以我认为Java语言的基础学习应该从 ......

如何用JAVA 对象?

如何用JAVA 对象?
写简单下给我看下 谢谢了
创建类 名字 =new 设String 几个都可以。 在用复制 输出
在下面继续创建类 后面最好标注上//这样看起来简单下谢谢了
求解决 类和对象没学明白老师讲的我糊涂 迷糊做不出来。 ......

关于java中的存储问题


    新手感悟……
就个人理解,java中分为基本数据类型还有对象。对于基本数据类型。在赋值操作中传递的是值,而不是引用。例如
int a = 10;
int b = a;
int b = 11;
这时,输出a,b可以发现。a = 10 ,b = 11;在b = a这个赋值操作中,是将a对应的值传递给了b。而不是将b的引用指向了a的 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号