Re: Multidimensional arrays and arrays of arrays
On Jan 15, 1:15 pm, RedGrittyBrick <RedGrittyBr...@spamweary.invalid>
wrote:
Philipp wrote:
public static void main(String[] args) {
Object[] a = new Object[1];
a[0] = new float[12];
You cant new a primitive type. I'll assume Float everywhere you wrote flo=
at.
Nope. I new an array of primitive type, not a primitive type . (and
that example works on my machine)
Object b = new float[1][12];
if(a instanceof float[][]){
This is a compile time error (in Eclipse at least) - a [] isn't a [][]!
Did you intend to write "a instanceof Float[]" ?
No, and that compiles OK here.
System.out.println("a is float[][]");
}
if(b instanceof float[][]){
System.out.println("b is float[][]");
}
}
prints "b is float[][]" (but not for a) as expected.
Since "a" can contain any type of object, wouldn't it be wrong for
instanceof to report "a" as being of type Float[][]?
Yes evidently. I just wanted to make clear that you can't determine if
an array is a multidimensional array, by checking if the first element
of the array is an array itself.
I have come up with some code which works pretty good for arrays of
size different than 0 in all dimensions. Unfuortunately it fails when
any dimension has length 0.
public static int getNumberOfDimension(Object[] src){
int dim = 1;
if (src instanceof Object[][]) {
// using recursion to reach all dimensions
if(src.length > 0)
dim += getNumberOfDimension((Object[])src[0]);
}
// handling primitive types explicitly
else if(src instanceof boolean[][] ||
src instanceof byte[][] ||
src instanceof short[][] ||
src instanceof int[][] ||
src instanceof long[][] ||
src instanceof float[][] ||
src instanceof double[][]){
dim = 2;
}
return dim;
}
Phil