gpt4 book ai didi

dart - 列表属性继承

转载 作者:行者123 更新时间:2023-12-03 04:04:57 24 4
gpt4 key购买 nike

解析器提示属性继承者 .list 不是 ModelList.list 的子类型,但 LeadsGroup 确实继承自 Model。
这是错的吗?这样做的正确方法是什么?

我的基类:

abstract class ModelList {
List<Model> get list;
set list(List<Model> n);
}

继承人:
class ListLeadsGroup extends ModelList {
List<LeadsGroup> list;
}

class LeadsGroup extends Model {
}

最佳答案

如果你有类似的代码

class Foo extends ModelList {}

ModelList ml = new ListLeadsGroup();
ml.list.add(new Foo());
ml.listModel 类型,因此添加 Foo应该是合法的。
但这很可能不是您想要的。
这就是为什么 List<ListLeadsGroup>无法覆盖 List<Model> .

这应该做你想要的:
abstract class ModelList<T extends Model> {
List<T> get list;
set list(List<T> n);
}

class ListLeadsGroup extends ModelList<LeadsGroup> {
List<LeadsGroup> list;
}

class LeadsGroup extends Model {
}

刚刚从 Matan Lurey 对 Gitter 的评论中复制而来

import 'package:func/func.dart';

class ModelRegistry {
final _factories = <Type, Func0<Model>>{};

Model create(Type type) => _factories[type]();

void register(Type type, Model factory()) {
_factories[type] = factory;
}
}

main() {
var registry = new ModelRegistry();
registry.register(FooModel, () => new FooModel());
var foo = registry.create(FooModel);
}

关于dart - 列表属性继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42679718/

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