2014-01-12 69 views
0

我试图通过重写子类访问访问一个子类静态变量时得到空返回:通过子类方法访问静态变量

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。

这可能吗?

编辑:

this Skill [id=0]  
    description "bar" [id=19] 
    name "foo" [id=18] 

回答

1

你的例子有几个缺陷如DartEditor所示: _skills_getDb()检查this时不存在。

Map_getDb()Map_getDb()之间缺少空格。
这是只在你的问题或你运行的代码?

abstract Map _getDb();也是一个语法错误。
在飞镖的方法时,你不提供(的;代替{}

的实施后能解决此代码工作正常是由抽象的。

+1

你是对的:我发布的示例运行时没有错误:-P。我将删除此问题并在下次发布之前运行我的示例代码! –