在以下示例中,main被允许在Dog上调用一个嗅探函数,我希望它会以某种方式中断。如果我确切地说了Dog可以做什么,但是以某种方式客户可以知道更多,并且可以利用该特殊知识使对象做更多事情-我认为这是封装泄漏。我并不一定希望它在一般情况下都消失,但是是否有一种运行的标志或方式可以强制要求只有存在的方法才能被调用。我知道该语言支持以下知识:自Dart编辑器显示警告以来,出现了一些问题:未为类“狗”定义方法“嗅探”。即使使用--checked标志运行,也可以正常运行。

因此,假设测试调用了类似的代码。运行测试时,Dart中是否有标志或某些代码导致其失败?

abstract class Dog {
  void run();
  void bark();
}

class BigDog implements Dog {
  void run() => print("Big dog running");
  void bark() => print("Woof");
  void sniff() => print("Sniff");
}

main() {
  Dog bd = new BigDog();
  bd.run();
  bd.bark();
  bd.sniff();
}

最佳答案

您应该确保以checked mode dart -c testfile.dart运行测试,然后考虑类型注释。但是,您不应在生产中使用checked mode,因为它会使您的应用程序变慢。

关于dart - 如何使分析警告触发运行时失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18023086/

10-14 12:57