旧界面和默认关键字

Old interface and default keywords

我在 2 年前的 dart 代码中遇到了以下内容

interface BindingConverter default IdentityBindingConverter {
  BindingConverter();

  Object convertFromModel(Object value);
  Object convertToModel(Object value);
}

class IdentityBindingConverter implements BindingConverter {
  Object convertFromModel(Object value) => value;
  Object convertToModel(Object value) => value;
}

我知道 interface 关键字被删除了,应该使用 abstract 代替,但是 default 关键字是什么?是与还是扩展或其他东西,默认实现可能?

"default implementation class" 是一种将构造函数从接口转发到实现 class' 构造函数的方法。

现在没有接口,所有 classes 都可以将构造函数转发给它们的任何子classes。 您使用 factory Foo.bar(baz, qux) = SubFoo.bar; 语法单独转发每个构造函数。

abstract class BindingConverter {
  // Forwards the arguments to IndentityBindingConverter's unnamed constructor.
  factory BindingConverter() = IdentityBindingConverter;   
  Object convertFromModel(Object value);
  Object convertToModel(Object value);
}
class IdentityBindingConverter implements BindingConverter {
  Object convertFromModel(Object value) => value;
  Object convertToModel(Object value) => value;
}