JArray<E> constructor

JArray<E>(
  1. JType<E> elementType,
  2. int length
)

Creates a JArray of the given length from the given elementType.

The length must be a non-negative integer.

Implementation

factory JArray(JType<E> elementType, int length) {
  const primitiveCallTypes = {
    'B': JniCallType.byteType,
    'Z': JniCallType.booleanType,
    'C': JniCallType.charType,
    'S': JniCallType.shortType,
    'I': JniCallType.intType,
    'J': JniCallType.longType,
    'F': JniCallType.floatType,
    'D': JniCallType.doubleType,
  };
  if (!primitiveCallTypes.containsKey(elementType.signature) &&
      elementType is JObjType) {
    final clazz = (elementType as JObjType).jClass;
    final array = JArray<E>.fromReference(
      elementType,
      JGlobalReference(
        Jni.accessors
            .newObjectArray(length, clazz.reference.pointer, nullptr)
            .objectPointer,
      ),
    );
    clazz.release();
    return array;
  }
  return JArray.fromReference(
    elementType,
    JGlobalReference(
      Jni.accessors
          .newPrimitiveArray(
              length, primitiveCallTypes[elementType.signature]!)
          .objectPointer,
    ),
  );
}