You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart中BaseUseCase泛型类的In、Out类型参数含义是什么

BaseUseCase <In,Out>中In、Out的含义与作用

这两个是Dart泛型语法里的类型占位参数,是分层架构中业务用例基类的通用写法,核心作用是统一约束所有业务用例的输入、输出类型规范,提前做类型校验避免类型不匹配的问题。

  • In:对应业务用例执行时需要传入的入参类型。比如实现「获取用户详情」用例时,入参需要int类型的用户ID,就可以在继承基类时把In指定为int;如果某个用例不需要传入任何参数,直接将In指定为void即可。
  • Out:对应业务用例执行完成后返回的结果类型。还是以获取用户详情为例,用例执行完成后要返回自定义的User实体对象,就把Out指定为User;如果用例执行完不需要返回任何结果,同样可以将Out指定为void。

你可以参考下面的实际实现代码理解:

// 自定义用户实体类
class User {
  final int id;
  final String name;
  User(this.id, this.name);
}

// 实现获取用户详情用例:入参为int类型用户ID,返回值为User类型
class GetUserDetailUseCase extends BaseUseCase<int, User> {
  @override
  Future<User> call(int userId) async {
    // 此处写具体业务逻辑,比如调用数据仓库拉取用户信息
    return User(userId, "测试用户");
  }
}

// 无入参用例示例:获取应用全局配置,不需要传参,返回配置Map
class GetGlobalConfigUseCase extends BaseUseCase<void, Map<String, dynamic>> {
  @override
  Future<Map<String, dynamic>> call(void params) async {
    return {"themeMode": "dark", "appVersion": "1.0.0"};
  }
}

这种泛型基类写法的优势很明显:所有业务用例都遵循统一的调用规范,编译器会自动做类型检查,如果你传错入参类型、用错误的类型接收返回值,会直接在编译阶段报错,不用等到运行时才发现类型相关bug。

内容的提问来源于stack exchange,提问作者Ahmed Shama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 21:06:21