gpt4 book ai didi

dart - Dart API引用中的抽象方法

转载 作者:行者123 更新时间:2023-12-04 18:11:14 25 4
gpt4 key购买 nike

complete中的许多方法(例如Completer)都标记为“抽象”,但实际上可以直接调用它而无需实现。我真的很困惑有人可以帮我吗?

最佳答案

是的,这可能有点令人困惑。虽然无法实例化抽象类,但可以通过定义工厂构造函数使它们看起来可实例化。这是CompleterFuture和其他抽象类的作用:

abstract class Completer<T> {

factory Completer() => new _CompleterImpl<T>();

...
}

然后,您可以在由 factory构造函数创建的对象上调用方法。在上面的示例中, factory Completer()返回一个新的 _CompleterImpl对象。查看该类的(截断)代码:
class _CompleterImpl<T> implements Completer<T> {

final _FutureImpl<T> _futureImpl;

_CompleterImpl() : _futureImpl = new _FutureImpl() {}

Future<T> get future {
return _futureImpl;
}

void complete(T value) {
_futureImpl._setValue(value);
}
...
}

你会看到 complete();那就是被调用的方法。

关于dart - Dart API引用中的抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13658845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com