5
我移植一些Java代碼來DART和它大量使用這些類型的地圖:通過地圖中的類達特
Map<Class<? extends SomeClass>, SomeOtherClass> map = new HashMap<>();
目前,這似乎是在鏢不可能的。據我所知,有引進第一級類型的建議:http://news.dartlang.org/2012/06/proposal-for-first-class-types-in-dart.html這將引進
class Type {
@native String toString();
String descriptor(){...} // return the simple name of the type
}
所以直到這個建議得到實施,我創建以下類:
class Type {
final String classname;
const Type(this.classname);
String descriptor() => classname;
}
,並在那裏我需要的類它有一個簡單的GET-方法
abstract Type get type();
這樣,我可以用我的Type
就像我會用實際Type
的d稍後切換,我只需要刪除我的解決方法。
我的問題:有沒有做這種映射的飛鏢方式(我沒有看到),還是我採用合理的解決方法,直到真正的Type
類被引入?
更新飛鏢1.0
這是可以做到這樣:
var map = new Map<Type, SomeOtherClass>();
// either
map[SomeOtherClass] = new SomeOtherClass();
// or
var instance = new SomeOtherClass();
map[instance.runtimeType] = instance;
在地圖的關鍵是類測試的實例,但我需要類是關鍵,而不是實例..哦,我明白了,我的Java代碼是錯誤的 – 2012-07-09 21:42:11
更新了我的問題.. – 2012-07-09 21:44:14