首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Dart -将泛型类型(T)约束为枚举

Dart -将泛型类型(T)约束为枚举
EN

Stack Overflow用户
提问于 2019-12-17 02:31:06
回答 1查看 2.5K关注 0票数 15

有没有办法将泛型类型约束为enum,如下所示?

代码语言:javascript
运行
复制
class MyClass<T extends enum> {}

就像this in C#一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-29 06:11:26

这在Dart中是不可能的。我在将枚举属性转换为SQLite数据库(只能保存其数字类型)时遇到了同样的问题,因此我需要enum.values将整数“解析”为枚举,并需要enum.index将枚举值转换为整型。

唯一可能的方法是将枚举转换为动态或传递枚举值。

示例:

代码语言:javascript
运行
复制
T mapToEnum<T>(List<T> values, int value) {
  if (value == null) {
    return null;
  }

  return values[value];
}

dynamic enumToMap<T>(List<T> values, T value) {
  if (value == null) {
    return null;
  }

  return values.firstWhere((v) => v == value);
}

所以我可以像这样使用:

代码语言:javascript
运行
复制
final SomeEnum value = SomeEnum.someValue;
final int intValue = enumToMap(SomeEnum.values, value);
final SomeEnum enumValue = mapToEnum(SomeEnum.values, value.index);
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59362403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档