2014-01-12 70 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。我將刪除此問題並在下次發佈之前運行我的示例代碼! –