getClass method
Gets the Class metadata for this object's runtime type.
Parameters:
domain
: Optional protection domainpackage
: Optional package name to search with
Returns:
- A Class<Object> instance representing the object's type
- Uses the current protection domain for security
Equivalent to:
Class.forType<Object>(runtimeType, ProtectionDomain.current())
Implementation
Class getClass([ProtectionDomain? domain, String? package]) {
final Object self = this;
if (self is Iterable<Object?>) {
Class<Object?> Function<E>() f = switch (self) {
List<Object?>() => <E>() => Class<List<E>>(null, null),
Set<Object?>() => <E>() => Class<Set<E>>(null, null),
_ => <E>() => Class<Iterable<E>>(null, null),
};
return extractIterableTypeArgument(self, f) as Class<Object?>;
}
if (self is Iterable) {
Class Function<E>() f = switch (self) {
List() => <E>() => Class<List<E>>(null, null),
Set() => <E>() => Class<Set<E>>(null, null),
_ => <E>() => Class<Iterable<E>>(null, null),
};
return extractIterableTypeArgument(self, f) as Class<Object?>;
}
if (self is Map<Object?, Object?>) {
Class<Object?> Function<E, F>() f = switch (self) {
Map<Object?, Object?>() => <E, F>() => Class<Map<E, F>>(null, null),
};
return extractMapTypeArguments(self, f) as Class<Object?>;
}
if (self is Map) {
Class Function<E, F>() f = switch (self) {
Map() => <E, F>() => Class<Map<E, F>>(null, null),
};
return extractMapTypeArguments(self, f) as Class<Object?>;
}
try {
return Class.fromQualifiedName(ReflectionUtils.findQualifiedName(self), domain ?? ProtectionDomain.system());
} on ClassNotFoundException catch (_) {
return Class.forObject(self, domain ?? ProtectionDomain.system(), package);
}
}