Я переношу некоторый код Java -в Dart, и он активно использует такие карты :
Map, 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
, а для переключения позже мне просто нужно удалить обходной путь.
Мой вопрос :Есть ли какой-то дротик -способ сделать такое отображение (, которого я не вижу ), или способ, которым я это делаю, является разумным обходным путем, пока не будет введен настоящий Type
класс?
Обновление для Dart 1.0
Это можно сделать так:
var map = new Map();
// either
map[SomeOtherClass] = new SomeOtherClass();
// or
var instance = new SomeOtherClass();
map[instance.runtimeType] = instance;