2013-04-21 47 views
0

让我们说我有具体的类猫,狗,鹦鹉和,出现如下界面:如何保证Dart中的某个命名构造函数?

class HasGuid { 
    HasGuid.fromId(String id); 
} 

我的目标是保证猫,狗,鹦鹉和所有有fromId命名的构造函数。所以,我可以像电话:

Cat.fromId("Whiskers") =returns> [A Future<Cat> object with id "Whiskers"] 
Dog.fromId("Fido")  =returns> [A Future<Dog> object with id "Fido"] 
Parrot.fromId("Polly") =returns> [A Future<Parrot> object with id "Poly"] 

fromId正在通过网络打电话,我为此回击一个Future。我基本上想要一个合同,指出混合/扩展/实现/任何HasGuid类将有一个名为构造函数fromId的任何类。 T类中的fromId将采用标识字符串并将返回Future<T>

+2

不知道我是否按照你的问题。一个命名的构造函数必须按照定义返回它自己的类的类型,所以它不能返回未来。 – 2013-04-21 08:28:19

+0

拍摄,我写这个时候已经很晚了,对不起。我跳过工厂构造函数+保证接口的某些组合可能会让我摆脱这种困境。除此之外,静态方法+保证接口将是次佳。 – 2013-04-21 18:07:21

+0

也许我应该用不同的措词。我正在寻找一个合同,指出任何具体的类A都有一个“类方法”.fromId(String B),它返回A的一个实例,ID为B. – 2013-04-21 18:10:11

回答

2

构造函数不能保证。

接口(实现)实例方法的保证。 超类(扩展)或Mixins(带)也保证实例方法,而不是构造函数。

构造函数返回它自己的类型,而不是未来。

所以他们应该都有一个静态的方法或类,但不能保证。

相关问题