我想知道是否可以在 Dart 中创建泛型类型的实例。在 Java 等其他语言中,您可以使用反射来解决这个问题,但我不确定这在 Dart 中是否可行。
我有这门课:
class GenericController <T extends RequestHandler> {
void processRequest() {
T t = new T(); // ERROR
}
}
我尝试了使用 Activator 的 mezonis 方法,它有效。但这是一种昂贵的方法,因为它使用镜像,如果您不想拥有 2-4MB 的 js 文件,则需要使用“mirrorsUsed”。
今天早上我想到使用通用 typedef 作为生成器,从而摆脱反射:
您定义这样的方法类型:(如果需要,添加参数)
typedef S ItemCreator<S>();
甚至更好:
typedef ItemCreator<S> = S Function();
然后在需要创建新实例的类中:
class PagedListData<T>{
...
ItemCreator<T> creator;
PagedListData(ItemCreator<T> this.creator) {
}
void performMagic() {
T item = creator();
...
}
}
然后你可以实例化PagedList
像这样:
PagedListData<UserListItem> users
= new PagedListData<UserListItem>(()=> new UserListItem());
您不会失去使用泛型的优势,因为在声明时您无论如何都需要提供目标类,因此定义创建者方法不会有什么坏处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)