跳到主要内容

subtype_of_sealed_class

类 '{0}' 不应被扩展(extend)、混入(mixin)或实现(implement),因为它是一个密封类。

描述

#

当密封类(即带有 sealed 注解或继承/混入了密封类的类)在类或 mixin 声明的 extends, implementswith 子句中被引用,并且该声明与密封类不在同一个包中时,分析器会生成此诊断信息。

示例

#

假设有一个库,位于正在分析的包之外,其中包含以下内容

dart
import 'package:meta/meta.dart';

class A {}

@sealed
class B {}

以下代码会生成此诊断信息,因为类 C 扩展了密封类 B,而 CB 不在同一个包中。

dart
import 'package:a/a.dart';

class C extends B {}

常见修复方法

#

如果该类不需要成为密封类的子类型,则修改声明使其不成为其子类型。

dart
import 'package:a/a.dart';

class B extends A {}

如果该类需要成为密封类的子类型,那么或者修改密封类使其不再是密封类,或者将该子类移动到与密封类相同的包中。