internal JavaObject(params object[] args)
        {
            if (args == null)
            {
                args = new object[0];
            }
            mClass = CreateGlobalRef(FindClass(GetClass(GetType())));
            string sign = GetSignature(null, args);

            jvalue[] jniArgArray = ConstructArgArray(args);
            try {
                IntPtr num = JNISafe.NewObject(mClass, AndroidJNIHelper.GetConstructorID(mClass, sign), jniArgArray);
                mObject = CreateGlobalRef(num);
                JNISafe.DeleteLocalRef(num);
            }
            finally {
                AndroidJNIHelper.DeleteJNIArgArray(args, jniArgArray);
            }
        }