создание экземпляра универсального класса в Dart

#flutter #dart

#flutter #dart

Вопрос:

Я хотел бы создать экземпляр объекта с универсальным типом в Dart.

Пока что нет ничего сложного. Вот как я обычно это делаю:

 MyClass <MyType> x = new MyClass <MyType> ();
  

Однако здесь у меня несколько особый случай. Тип «MyType», который я хочу использовать, содержится в переменной.
И там я не вижу, как выполнить создание экземпляра.
Я указываю, что это для проекта Flutter.
Не могли бы вы мне помочь, пожалуйста?

Комментарии:

1. Не могли бы вы предоставить немного больше информации по вашему вопросу? Я не понимаю, что вы подразумеваете под «тип содержится в переменной».

Ответ №1:

Таким образом, вы можете создать универсальный класс и настроить его в соответствии с вашими потребностями:

 class GenericClass<T> {
  T t;

  T getModel() => t;

  void setModel(T t) => this.t = t;
}

  

Вы также можете определить его тип, чтобы расширить свой пользовательский интерфейс:

 class GenericClass<T extends CustomModel>{
   ...
}
  

Для использования просто получите экземпляр из класса, подобного этому:

 GenericClass<int> intClass = new GenericClass();
  

Надеюсь, это было полезно для вас 🙂

Ответ №2:

Нет пути без использования чего-либо отражающего, например dart:mirrors , для перехода от строки к типу. Это сделано специально, чтобы обеспечить более продуктивную работу с деревом и оптимизацию.

Комментарии:

1. Спасибо. Но dart: mirros не существует для проекта flutter. Я использую отражаемый. Мне нужен фрагмент кода.

2. Скоро. Скоро у нас будут макросы. И это позволит намного больше размышлений во время компиляции!