跳到主要內容

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 {}

如果該類需要成為密封類的子型別,那麼或者修改密封類使其不再是密封類,或者將該子類移動到與密封類相同的包中。