反射---编写泛型数组代码

java.lang.reflect包中的Array类允许动态创建数组。为了编写通用的复制数组的代码,需要能够创建与原数组类型相同的新数组Array类中的静态方法newInstance能够构造新数组

 在调用的时候需要提供两个参数,一个是数组的元素类型,一个是数组的长度

Object newArray = Array.newInstance(componentType, newLength);

 下面这个复制数组的方法可以用来扩展任意类型的数组不仅是对象数组。为了实现上述操作,将方法的参数类型设置为Object(对象类型),而不是Object [] (对象型数组)

基本数据类型数组,例int []可以转换成Object(对象类型),但不能转换成Object [] (对象数组)

public static Object copyOf(Object a, int newLength) {
     Class cl = a.getClass();
     if(!cl.isArray()) return null;
     Class componentType = cl.getComponentType();
     int length = Array.getLength(a);
     Object newArray = Array.newInstance(componentType, newLength);
     System.arraycopy(a, 0, newArray, 0, Math.min(length, newLength));    
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容