Как проверить, основан ли класс на другом абстрактном классе

Как я могу проверить, расширяет ли мой объект типа A тип B, когда экземпляр расширяет только B, но имеет тип C.

Например:

abstract class A {
}

abstract class B extends A {
}

class C extends B {
}

A myA = C();

Я хочу проверить, является ли myA расширением класса B (как в примере).

Протестировано следующее

if (myA.runtimeType is B) // return false

if (myA.runtimeType == B) // return false

if (myA == B) // return false

person Guy Luz    schedule 10.06.2021    source источник


Ответы (1)


Вам нужно удалить .runtimeType и использовать оператор is следующим образом

if (myA is B) // return true

Затем оператор вернет true, как вы хотите, если myA расширяет B, даже если он не является прямым экземпляром B.

person Guy Luz    schedule 10.06.2021