#generics #dart
#общие #dart
Вопрос:
Вот код, который я хотел бы сделать:
abstract class StateBase<E> {
void restoreState( E target );
void saveState( E source );
}
class StateController<T extends StateBase<E>> {
final List<T> _states = [];
void takeSnapshot( E target ) { ... }
void addState( T state ) { ... }
Но в строке:
class StateController<T extends StateBase<E>> {
Когда я добавляю бит <E>, он выдает ошибку:
The name 'E' isn't a type so it can't be used as a type argument.
Динамическая типизация означает, что я могу обойтись без бита ‘E’ и просто использовать ‘StateBase’, но я бы предпочел проверку типа, которую я могу получить, используя второй общий E.
Возможно ли это сделать в Dart?
Спасибо за ваше время!
Ответ №1:
Просто добавьте E
в качестве другого параметра типа:
class StateController<E, T extends StateBase<E>>
Комментарии:
1. Это сработало отлично! И имеет полный смысл. Большое спасибо! 🙂