Dart:获取通用List类型的子类型

问题描述 投票:0回答:3

请考虑以下方法:

static void parse<T>(String input, T instance)

可能有一种情况,T是一种List。我如何获得List的子类型?请注意,此时List中没有元素。这样做,例如List[0].runtimeType是别无选择。

如果TList<Foo>类型,我想得到Foo

如何在Dart中做到这一点?

dart flutter
3个回答
0
投票

这个特殊功能不可用,因为它会使树摇动变得复杂。

根据您的使用情况,您可能会得到以下内容:

void parseList<T>(String input, List<T> instance) {
  // T is now the static type of List<T>
}

但是,如果List的类型静态未知,则无效。


0
投票

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

List<Something> someList = new List<Something>();
String type = someList.runtimeType.toString(); // List<Something>

然后你就可以阅读类型并用它做一些事情。


-2
投票

我不确定你想做什么,但也许你可以写一个像这样的方法:

static void parseList<T>(String input, List<T> list)

请使用更多背景以获得更好的答案。

© www.soinside.com 2019 - 2024. All rights reserved.