예제 #1
0
 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
 }
예제 #2
0
        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);
        }