跳到主要内容

illegal_concrete_enum_member

不能在实现了 'Enum' 的类中声明名为 '{0}' 的具体实例成员。

不能在实现了 'Enum' 的类中从 '{1}' 继承名为 '{0}' 的具体实例成员。

描述

#

当枚举声明、实现了 Enum 的类或具有 Enum 超类约束的 mixin 声明或继承了名为 indexhashCode== 的具体实例成员时,分析器会产生此诊断信息。

示例

#

以下代码会产生此诊断信息,因为枚举 E 声明了一个名为 index 的实例 getter。

dart
enum E {
  v;

  int get index => 0;
}

以下代码会产生此诊断信息,因为类 C(该类实现了 Enum)声明了一个名为 hashCode 的实例字段。

dart
abstract class C implements Enum {
  int hashCode = 0;
}

以下代码会产生此诊断信息,因为类 C(该类通过类 A 间接实现了 Enum)声明了一个名为 hashCode 的实例 getter。

dart
abstract class A implements Enum {}

abstract class C implements A {
  int get hashCode => 0;
}

以下代码会产生此诊断信息,因为 mixin M(该 mixin 在 on 子句中包含 Enum)声明了一个显式名为 == 的运算符。

dart
mixin M on Enum {
  bool operator ==(Object other) => false;
}

常见修复方法

#

重命名冲突成员

dart
enum E {
  v;

  int get getIndex => 0;
}