尝试通过重写的子类访问器访问子类静态变量时,我得到null:
library resource;
abstract class Resource
{
String name;
String description;
Resource(this.name, this.description);
Resource.map(Map data)
{
...
_getDb()[this] = data;
}
abstract Map _getDb();
}
class Skill extends Resource
{
static Map _skills = {}
Skill.map(Map data) : super.map(data);
Map_getDb()
{
return _skills;
}
}
import 'resource.dart'
void main() {
useVMConfiguration();
test('constructor', () {
Skill skill = new Skill.map({
'name': 'foo'
});
}
}
这里我试图在超级构造函数中的(希望)现在构造的子类上调用_getDb()
。尽管_skills
被实例化,但_getDb()
返回null。
这可能吗?
编辑:
在_skills
检查this
时,_getDb()
不存在:
this Skill [id=0]
description "bar" [id=19]
name "foo" [id=18]
答案 0 :(得分:1)
你的例子有DartEditor显示的几个缺陷。
Map_getDb()
在Map
和_getDb()
之间缺少空格
这只是在您的问题或您运行的代码中吗?
abstract Map _getDb();
也是语法错误
在Dart中,当您不提供实现时,方法会变为抽象(;
而不是{}
)
修复后,代码运行正常。