public static int Shiftof(java.lang.Class cls = null) { if (cls == null) { cls = ((system.RuntimeType) typeof(T)).JavaClassForArray(); } if (cls.isPrimitive()) { if (cls == java.lang.Boolean.TYPE || cls == java.lang.Byte.TYPE) { return(0); // size 1, shift of 0 } if (cls == java.lang.Character.TYPE || cls == java.lang.Short.TYPE) { return(1); // size 2, shift of 1 } if (cls == java.lang.Integer.TYPE || cls == java.lang.Float.TYPE) { return(2); // size 3, shift of 2 } if (cls == java.lang.Long.TYPE || cls == java.lang.Double.TYPE) { return(3); // size 4, shift of 3 } } return(4); // dummy size 16 (shift 4) for all non-primitive types }
public object Array(java.lang.Class cls) { var array = this.array.Get(); if (array == null) { if (cls == null) { cls = ((system.RuntimeType) typeof(T)).JavaClassForArray(); } int shift = this.shift; if (shift != 0) { shift--; } else { shift = Shiftof(cls); this.shift = shift + 1; } count = count >> shift; this.array.Set(array = java.lang.reflect.Array.newInstance(cls, count)); if (!cls.isPrimitive()) { for (int i = 0; i < count; i++) { java.lang.reflect.Array.set(array, i, cls.newInstance()); } } } return(array); }