自写一个任意类型数组复制的数组
- 需要了解到Java.lang.reflect.Aarray类中有一下一些方法:
static get(Object array ,int index) 返回给定位子上给定数组的内容
static set(Object array ,int index,Object newValue) 将一个新值储存到给 定位子的上的给定数据中
int getLength() 返回数据长度
Object newInstance(Class componentType, int Length[ ]) 返回一个给定具体类型,给定维数的的新数字 - -需要用到一个很经典的函数
System.arrayCopy的源代码声明 :
public static void arrayCopy(obj src, int srcNum, obj src2, int srcNum2, int length)
代码解释: Object src : 原数组
int srcPos : 从元数据的起始位置开始
Object dest : 目标数组
int destPos : 目标数组的开始起始位置
int length : 要copy的数组的长度
3.代码展示
public class CopyTest{
// 这是测试方法
public static void main(String [ ] args){
}
//这是自定义任意类型数组复制的方法
public static Object copyEvAarry(Object a, int newlength){
//首先获取到a类型数组的任意字节码文件
Class a1= a.getClass();
if(!a1.isAarray()){
return null;
}
//获取数组类型
Class a1Tpye = a1.getComponentType();
int length =Aarry.getLength(a);
Object newAarray =Array.newInstance(a1Tpye ,newLength);
System.arraycopy(a,0,newAarray,0,Math.min(length,newLength));
return newAarray;
}
}
完结:撒花,(▽)