黑马程序员技术交流社区

标题: 如何理解数组的反射 [打印本页]

作者: pys200603027    时间: 2013-6-17 18:41
标题: 如何理解数组的反射
看来高新技术的视频,关于数组的反射,总是有似懂未懂的感觉,大家集思广益一下

作者: 月时微    时间: 2013-6-17 19:18
数组是Java编程语言中的对象。与所有对象一样,它们都有类。如果您有一个数组,使用标准 getClass 方法,您可以获得该数组的类,就象任何其它对象一样。但是, 不通过现有的实例来获得类不同于其它类型的对象。即使您有一个数组类,您也不能直接对它进行太多的操作 -- 反射为标准类提供的构造函数接入不能用于数组,而且数组没有任何可接入的字段,只有基本的 java.lang.Object 方法定义用于数组对象。数组的特殊处理使用 java.lang.reflect.Array 类提供的静态方法的集合。该类中的方法使您能够创建新数组,获得数组对象的长度,读和写数组对象的索引值。下面显示了一种重新调整现有数组大小的有效方法。它使用反射来创建相同类型的新数组,然后在返回新数组之前,在老数组中复制所有数据。通过反射来扩展一个数组:public Object growArray(Object array, int size) {    Class type = array.getClass().getComponentType();    Object grown = Array.newInstance(type, size);    System.arraycopy(array, 0, grown, 0,        Math.min(Array.getLength(array), size));    return grown;}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2