【发布时间】:2013-12-07 16:57:20
【问题描述】:
我正在将一些 Java 代码移植到 Dart,它大量使用这些类型的映射:
Map<Class<? extends SomeClass>, SomeOtherClass> map = new HashMap<>();
目前这在 dart 中似乎是不可能的。我知道有一个引入第一级类型的提议: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 并且稍后切换我只需要删除我的解决方法。
我的问题:在引入真正的 Type 类之前,是否有一些快速的方式来进行这种映射(我没有看到)或者我这样做的方式是否合理?
Dart 1.0 更新
可以这样做:
var map = new Map<Type, SomeOtherClass>();
// either
map[SomeOtherClass] = new SomeOtherClass();
// or
var instance = new SomeOtherClass();
map[instance.runtimeType] = instance;
【问题讨论】:
标签: dart