可以在Dart中覆盖注释吗?

时间:2019-09-15 19:46:13

标签: flutter dart annotations

更新:作为“摆脱”注释的澄清,我的意思是在不更改分析仪本身的情况下,抑制分析仪抛出的警告

我正在扩展带有注释的类,并且我想覆盖父类注释,更具体地说,将其删除。有可能这样做吗?

例如:

@immutable
class A {}

/// get rid of @immutable annotation
class MutableA extends A {}

1 个答案:

答案 0 :(得分:1)

注释在Dart语言本身中没有语义,它们表示识别它们的工具决定它们的含义。

注释永远不会被继承。如果您使用dart:mirrors进行检查,则注释仅存在于源代码中。

因此,如果一个工具识别了@immutable,并且确定子类“继承”了“不可变”的属性,那么这就是该工具的决定。 immutable annotation被记录为适用于“所有子类型”。

从语言的角度来看,@immutable上没有MutableA,所有内容都在工具的顶部,因此没有要删除的注释。 A上的注释的含义A的所有子类都必须是不可变的。

从分析仪收到的消息是提示。您可以通过各种方式suppress hints,例如,在引起提示的行之前添加“忽略”注释。 在这种情况下,您可以添加

// ignore: must_be_immutable

在子类的类声明之前的行上,这是不可变的。那应该抑制提示。