镖。当类没有实现接口时没有警告和错误

时间:2015-03-25 19:39:45

标签: dart

我无法理解飞镖的这种“怪异”行为。看看上面的示例:

abstract class Swimmer {
  int numOfSwim;
  Swim();
}

class Human implements Swimmer {

}

当我运行此代码时,没有警告和错误。我用DART_FLAGS='--enable_type_checks --enable_asserts'开始了dartium。我勒个去?如果实际上没有类,那么该类如何实现接口..看起来Dart有点松散。

可能Dart有一些模式更严格。

1 个答案:

答案 0 :(得分:2)

Dart spec州(第38页):

  

如果具体类没有,则为静态警告   任何超级接口中的方法的实现,除非它   声明自己的noSuchMethod方法(10.10)。

静态警告对于开发人员捕获错误非常有用,但不会干扰Dart程序的执行。另一方面,错误会对程序执行产生影响。您可以在Dart规范的第10页上阅读有关警告和错误之间差异的更多信息。

既然如此,在Dartium中运行代码就可以了,因为缺少方法实现只是一个警告,而不是错误。如果要捕获这些警告,可以使用Dart Analyzer来检查警告和错误。 Dart编辑器和IntelliJ等IDE集成了分析仪,因此您无需手动运行它。

例如,在Dart编辑器中,您的代码将显示以下警告:

  

缺少setter' Swimmer.numOfSwim'的具体实现,   ' Swimmer.Swim'和getter' Swimmer.numOfSwim'