【问题标题】:IntelliJ reporting that abstract class is missing implementation of concrete method, but method is implemented in abstract class?IntelliJ 报告抽象类缺少具体方法的实现,但方法是在抽象类中实现的?
【发布时间】:2019-11-12 16:42:23
【问题描述】:

我有一个抽象的 Dart 类,其中包含一些抽象方法和一个具体的已实现方法,我希望在所有子类中保持一致。

IntelliJ 的 Dart 分析系统在子类中报告我的已实现方法不存在具体实现 - 尽管我可以看到抽象具有具体实现。

我也尝试在我的子类中实现该方法并调用超类,但这也被报告为未实现。抽象类和子类都在同一个文件中。

abstract class Exporter {
  List<String> getHeaderRow();
  List<dynamic> getEntryAsRow(EntriesData entry);

  /// Concrete implementation
  dynamic getVal(dynamic value) {
    return null;
  }
}

// ExpenseReport underlined in red: missing concrete implementation of getVal
class ExpenseReport implements Exporter {
  List<String> getHeaderRow() {
    return [];
  }

  List<dynamic> getEntryAsRow(EntriesData entry) {
    return [];
  }

//  dynamic getVal(dynamic value) {
//    super.getVal(value); // IntelliJ reports "getval" as abstract in superclass
//  }

}

【问题讨论】:

    标签: dart abstract-class


    【解决方案1】:

    class ExpenseReport implements Exporter
    

    您的意思是您的 ExpenseReport 实现了 Exporter 的接口,这反过来意味着它必须实现 Exporter 中声明的所有方法。

    如果你想从抽象的 Exporter 继承实现的方法,你需要像这样扩展它:

    class ExpenseReport extends Exporter
    

    【讨论】:

    • 谢谢!我什至没有注意到这个失误。
    • 这有点愚蠢。 Dart 需要更新
    猜你喜欢
    • 2016-08-13
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 2016-11-08
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多