Array.newInstance
method. The following sample program uses the
newInstance
method to create a copy of an array which is twice the size of the original array. The newInstance
method accepts as arguments the length and component type of the new array. The source code is as follows: The output of the preceding program is:import java.lang.reflect.*;
class SampleCreateArray {
public static void main(String[] args) {
int[] originalArray = {55, 66};
int[] biggerArray = (int[]) doubleArray(originalArray);
System.out.println("originalArray:");
for (int k = 0; k < Array.getLength(originalArray); k++)
System.out.println(originalArray[k]);
System.out.println("biggerArray:");
for (int k = 0; k < Array.getLength(biggerArray); k++)
System.out.println(biggerArray[k]);
}
static Object doubleArray(Object source) {
int sourceLength = Array.getLength(source);
Class arrayClass = source.getClass();
Class componentClass = arrayClass.getComponentType();
Object result = Array.newInstance(componentClass, sourceLength * 2);
System.arraycopy(source, 0, result, 0, sourceLength);
return result;
}
}
You can also use theoriginalArray:
55
66
biggerArray:
55
66
0
0
newInstance
method to create multi-dimensional arrays. In this case, the parameters of the method are the component type and an array of int
types representing the dimensions of the new array. The next sample program shows how to use newInstance
to create multi-dimensional arrays: import java.lang.reflect.*;
class SampleMultiArray {
public static void main(String[] args) {
// The oneDimA and oneDimB objects are one
// dimensional int arrays with 5 elements.
int[] dim1 = {5};
int[] oneDimA = (int[]) Array.newInstance(int.class, dim1);
int[] oneDimB = (int[]) Array.newInstance(int.class, 5);
// The twoDimStr object is a 5 X 10 array of String objects.
int[] dimStr = {5, 10};
String[][] twoDimStr =
(String[][]) Array.newInstance(String.class,dimStr);
// The twoDimA object is an array of 12 int arrays. The tail
// dimension is not defined. It is equivalent to the array
// created as follows:
// int[][] ints = new int[12][];
int[] dimA = {12};
int[][] twoDimA = (int[][]) Array.newInstance(int[].class, dimA);
}
}
No comments:
Post a Comment