JAVA 反射创建数组和操作数组的意义

我刚学这部分,不明白所以请教一下:
Java的反射是用来根据类名或者一个类的字符串地址来动态创建实例并操作的
Array类提供了Java通过反射的方法创建数组,那么这种创建方法和直接使用String[]等创建数组有什么使用上的优越性?
还有通过Array的set和get方法操作数组和直接将数组强制转换为String[]等类型进行操作有什么意义上的区别?

数组是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;

}
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网