as<T extends JObject?> method

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

Casts this object to another type.

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

Throws CastError if this object is not an instance of type.

Implementation

T as<T extends JObject?>(
  JObjType<T> type, {
  bool releaseOriginal = false,
}) {
  if (!isA(type)) {
    throw CastError('not a subtype of "${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);
}