Dart 中的非泛型 class 中的泛型 field/method
Generic field/method in non-generic class in Dart
在 Dart 中,是否有可能在非泛型 class 中使用泛型方法,如在 Java 中?
我使用 Getx 进行状态管理、DI 和路由,但这个问题并不特定于 Getx 或 Flutter。
我 AuthService
处理身份验证并设置登录用户,例如 Rxn<AppUser>
。我有 3 种类型的用户:Customer extends AppUser
、Seller extends AppUser
和 Admin extends AppUser
。
我想将 user observable 更改为如下所示:Rxn<? extends AppUser> currentUser = Rxn()
。
我尝试了以下语法,但没有用。
class AuthService extends GetxService {
T Rxn<T extends AppUser> currentUser = Rxn();
...
}
直接回答我的问题:
Dart 也支持泛型类型的继承(不像 Java)。所以,Rxn<AppUser> currentUser = Rxn<Patient>()
在 Dart 中是可能的。我不需要通配符或任何。感谢@jamesdlin 的 answer/comments.
您可以使用泛型方法。您将以与声明通用函数相同的方式声明它们:
class Foo {
String key;
Foo(this.key);
Map<String, T> f<T>(T value) => <String, T>{key: value};
}
但是,拥有通用字段没有意义。一个字段代表一个数据成员;当类型未知时,将存储什么数据以及存储在哪里?您是否会为 T
的每个可能值存储无限数量的数据成员?
在 Dart 中,是否有可能在非泛型 class 中使用泛型方法,如在 Java 中?
我使用 Getx 进行状态管理、DI 和路由,但这个问题并不特定于 Getx 或 Flutter。
我 AuthService
处理身份验证并设置登录用户,例如 Rxn<AppUser>
。我有 3 种类型的用户:Customer extends AppUser
、Seller extends AppUser
和 Admin extends AppUser
。
我想将 user observable 更改为如下所示:Rxn<? extends AppUser> currentUser = Rxn()
。
我尝试了以下语法,但没有用。
class AuthService extends GetxService {
T Rxn<T extends AppUser> currentUser = Rxn();
...
}
直接回答我的问题:
Dart 也支持泛型类型的继承(不像 Java)。所以,Rxn<AppUser> currentUser = Rxn<Patient>()
在 Dart 中是可能的。我不需要通配符或任何。感谢@jamesdlin 的 answer/comments.
您可以使用泛型方法。您将以与声明通用函数相同的方式声明它们:
class Foo {
String key;
Foo(this.key);
Map<String, T> f<T>(T value) => <String, T>{key: value};
}
但是,拥有通用字段没有意义。一个字段代表一个数据成员;当类型未知时,将存储什么数据以及存储在哪里?您是否会为 T
的每个可能值存储无限数量的数据成员?