Dart:获取通用列表类型的子类型

Gio*_*gen 6 dart flutter

考虑以下方法:

static void parse<T>(String input, T instance)
Run Code Online (Sandbox Code Playgroud)

可能有T一种情况是List. 如何获取 的子类型ListList请注意,此时中没有任何元素。所以这样做List[0].runtimeType是没有选择的。

如果T是类型List<Foo>,我想要得到Foo

在 Dart 中如何做到这一点?

Gio*_*gen 3

这是(有点)可能做到的,但这是一个非常丑陋的解决方法。一个条件是您必须先初始化列表,然后才能访问它的类型。

List<Something> someList = new List<Something>();
String type = someList.runtimeType.toString(); // List<Something>
Run Code Online (Sandbox Code Playgroud)

然后您就可以读取该类型并用它做一些事情。

  • 并且你不能对 dart 代码进行混淆,运行时类型也会被混淆。所以类型将是 List&lt;Afc&gt; 或类似的类型。 (2认同)
  • 换句话说,它在发布模式下不起作用。 (2认同)