public JniObject NewObjectCore(JniEnvironment environment, JValue[] arguments, JniConcreteObjectType concreteType) { VerifyEnvironment(environment); // NOTE: OK if "JValue[] arguments" is null IntPtr result = JniEnvironment.Functions.NewObjectA(environment.Handle, this.DeclaringClass.Handle, this.Handle, arguments); if (IntPtr.Zero == result) { JniThrowable.ThrowCurrentException(environment); // null result means an exception occurred } // EXCEPTION CHECK: Do nothing, already checked for exception above. return JniObject.CreateObjectOfType(environment, result, concreteType); }
internal static JniObject CreateObjectOfType(JniEnvironment environment, IntPtr handle, JniConcreteObjectType concreteType) { return CreateObjectOfType(environment, handle, concreteType, JniObjectLifecycle.Local); }
private static JniObject CreateObjectOfType(JniEnvironment environment, IntPtr handle, JniConcreteObjectType concreteType, JniObjectLifecycle lifecycle) { switch (concreteType) { case JniConcreteObjectType.Object: return new JniObject(environment, handle, lifecycle); case JniConcreteObjectType.String: return new JniString(environment, handle, lifecycle); case JniConcreteObjectType.Class: return new JniClass(environment, handle, lifecycle); case JniConcreteObjectType.Throwable: return new JniThrowable(environment, handle, lifecycle); case JniConcreteObjectType.BooleanArray: return new JniBooleanArray(environment, handle, lifecycle); case JniConcreteObjectType.ByteArray: return new JniByteArray(environment, handle, lifecycle); case JniConcreteObjectType.CharArray: return new JniCharArray(environment, handle, lifecycle); case JniConcreteObjectType.DoubleArray: return new JniDoubleArray(environment, handle, lifecycle); case JniConcreteObjectType.IntArray: return new JniIntArray(environment, handle, lifecycle); case JniConcreteObjectType.FloatArray: return new JniFloatArray(environment, handle, lifecycle); case JniConcreteObjectType.LongArray: return new JniLongArray(environment, handle, lifecycle); case JniConcreteObjectType.ShortArray: return new JniShortArray(environment, handle, lifecycle); case JniConcreteObjectType.ObjectArray: return new JniObjectArray(environment, handle, lifecycle, -1, JniType.Null); default: throw new JniException("TODO"); } }
public static JniObject CreateObjectOfTypeFromJ2N(JniEnvironment environment, IntPtr handle, JniConcreteObjectType concreteType) { return CreateObjectOfType(environment, handle, concreteType, JniObjectLifecycle.LocalJ2N); }