我有两个不同的类,它们都是另一个基类的子类,每个类都有一个方法来返回一个对象,做同样的事情,但返回不同的类型,是否可以在基类中编写这个方法?
class base {}
class subclassOne extends base {
subclassOne doSomething() {
//doing some common things
return subclassOne();
}
}
class subclassTwo extends base {
subclassTwo doSomething() {
//doing some common things
return subclassTwo();
}
}
我试过了,但显然编译器是这么说的。runtimeType不是类型。
class base {
base doSomething() {
//doing some common things
return base() as this.runtimeType;
}
}
class subclassOne extends base {}
class subclassTwo extends base {}
2条答案
按热度按时间ruyhziif1#
最直接的方法是重构代码,以便共享公共工作:
另一种方法是添加一个从现有示例返回新子类示例的方法(下面的代码使
Base
成为泛型,这样doSomething
就静态地返回子类类型)。一个更通用的版本是让子类提供回调而不是方法重写:
lztngnrs2#
您可以使用泛型
<T>
来实现这一点