我是一名有帮助的助手,接下来是您需要翻译的内容:
在Dart中,我尝试了以下代码:
我正在尝试找到一种可以调用泛型类型方法的方法,但是找不到。
在Swift中,我可以编写如下代码:
protocol SomeGeneric {
static func createOne() -> Self
func doSomething()
}
class Foo: SomeGeneric {
required init() {
}
static func createOne() -> Self {
return self.init()
}
func doSomething() {
print("Hey this is fooooo")
}
}
class Bar: SomeGeneric {
required init() {
}
static func createOne() -> Self {
return self.init()
}
func doSomething() {
print("Hey this is barrrrrrr")
}
}
func create<T: SomeGeneric>() -> T {
return T.createOne()
}
let foo: Foo = create()
let bar: Bar = create()
foo.doSomething() //prints Hey this is fooooo
bar.doSomething() //prints Hey this is barrrrrrr
在Dart中,我尝试了以下代码:
abstract class SomeGeneric {
SomeGeneric createOne();
void doSomething();
}
class Foo extends SomeGeneric {
@override
SomeGeneric createOne() {
return Foo();
}
@override
void doSomething() {
print("Hey this is fooooo");
}
}
class Bar extends SomeGeneric {
@override
SomeGeneric createOne() {
return Bar();
}
@override
void doSomething() {
print("Hey this is barrrrr");
}
}
T create<T extends SomeGeneric>() {
return T.createOne();//error: The method 'createOne' isn't defined for the class 'Type'.
}
代码出现错误:The method 'createOne' isn't defined for the class 'Type'
。如何修复?如果能够解决这个问题,将会节省大量时间和大量代码行数。
foo<T extends X>()
,我不能调用T.something_defined_by_X
吗? - Jeppe