castTo<T extends JObject> method

T castTo<T extends JObject>(
  1. JObjType<T> type, {
  2. bool releaseOriginal = false,
})

Casts this object to another type.

If releaseOriginal is true, the casted object will be released.

Implementation

T castTo<T extends JObject>(
  JObjType<T> type, {
  bool releaseOriginal = false,
}) {
  assert(
    Jni.env.IsInstanceOf(reference.pointer, type.jClass.reference.pointer),
    'The object must be of type "${type.signature}".',
  );
  if (releaseOriginal) {
    final ret = type.fromReference(JGlobalReference(reference.pointer));
    reference.setAsReleased();
    return ret;
  }
  final newRef = JGlobalReference(Jni.env.NewGlobalRef(reference.pointer));
  return type.fromReference(newRef);
}