Dart:如何为模型对象定义一个抽象 class,它有一个将它自己的类型作为参数的函数
Dart: How to define an abstract class for Model Objects which has a function that takes it's own type as a parameter
我在 Dart 中遇到以下问题:
我想定义一个具有某些功能的抽象 class 模型对象。其中就是函数isSame
abstract class ModelObject{
bool isSame(ModelObject object);
...
}
现在我定义 class PlayerModel 如下:
class PlayerModel extends ModelObject{
bool isSame(PlayerModel player){
//some code that checks if the objects are the same
}
这导致 dart 给我一个编译错误:
PlayerModel.isSame' ('bool Function(PlayerModel)') 不是 'ModelObject.isSame' ('bool Function(ModelObject)').dart(invalid_override)[=14= 的有效覆盖]
我通过将 ModelObjects 设为通用
设法回避了这个问题
abstract class ModelObject<T>{
bool isSame(T object);}
但这与其说是解决方案,不如说是作弊。
现在我的问题是:是否有更优雅的方法来解决这个问题,或者抽象 class在这种情况下只是错误的方法?
我相信您可以使用 covariant
关键字:
class PlayerModel extends ModelObject {
@override
bool isSame(covariant PlayerModel player) {
//some code that checks if the objects are the same
}
我在 Dart 中遇到以下问题:
我想定义一个具有某些功能的抽象 class 模型对象。其中就是函数isSame
abstract class ModelObject{
bool isSame(ModelObject object);
...
}
现在我定义 class PlayerModel 如下:
class PlayerModel extends ModelObject{
bool isSame(PlayerModel player){
//some code that checks if the objects are the same
}
这导致 dart 给我一个编译错误:
PlayerModel.isSame' ('bool Function(PlayerModel)') 不是 'ModelObject.isSame' ('bool Function(ModelObject)').dart(invalid_override)[=14= 的有效覆盖]
我通过将 ModelObjects 设为通用
设法回避了这个问题abstract class ModelObject<T>{
bool isSame(T object);}
但这与其说是解决方案,不如说是作弊。
现在我的问题是:是否有更优雅的方法来解决这个问题,或者抽象 class在这种情况下只是错误的方法?
我相信您可以使用 covariant
关键字:
class PlayerModel extends ModelObject {
@override
bool isSame(covariant PlayerModel player) {
//some code that checks if the objects are the same
}