使用其元素的类型重新分配数组大小

时间:2017-02-09 06:36:10

标签: java arrays allocation

我有一个类属性,它是一个function LowestAndSecondLowest(arr_num) { arr_num.sort(function(x,y) { return x-y; }); var uniqa = [arr_num[0]]; var result = []; for(var j=1; j<arr_num.length; j++) { if(arr_num[j-1] !== arr_num[j]) { uniqa.push(arr_num[j]); } } result.push("First smallest: "+uniqa[uniqa.length-arr_num.length],"second smallest: "+uniqa[1]); return result.join(' & '); } document.write(LowestAndSecondLowest([4,5,6]));内置数组。在某些时候我需要重新分配它的内存以使其加倍,但由于它是Anytype,我无法做到

Anytype

由于数组已经定义,我可以访问它的元素类:

myArray = new Anytype[myArray.length * 2];

我的问题是:我可以使用我知道我的数组类来重新分配它的事实吗?我知道我可以使用Java utils中的myArray[0].getClass(); ,但我想知道是否可以重新分配知道对象需要的大小,类似C-way

Arrays.copyOf

P.S:我不确定标题是否相关,如果你有更清楚的话,请告诉我

1 个答案:

答案 0 :(得分:1)

是的,像这样(假设source不为null或为空):

   public <T> T[] resizeArray(T[] source, int multiplier) {
    T[] newArray = (T[]) Array.newInstance(source.getClass().getComponentType(), source.length * multiplier);
    System.arraycopy(source, 0, newArray, 0, source.length);
    return newArray;
}

这两种:

  • source.getClass()。getComponentType()
  • myArray [0] .getClass()

返回元素类。