请考虑以下方法:
static void parse<T>(String input, T instance)
可能有一种情况,T
是一种List
。我如何获得List
的子类型?请注意,此时List
中没有元素。这样做,例如List[0].runtimeType
是别无选择。
如果T
是List<Foo>
类型,我想得到Foo
。
如何在Dart中做到这一点?
这个特殊功能不可用,因为它会使树摇动变得复杂。
根据您的使用情况,您可能会得到以下内容:
void parseList<T>(String input, List<T> instance) {
// T is now the static type of List<T>
}
但是,如果List
的类型静态未知,则无效。
它(有点)可以这样做,但它是一个非常丑陋的解决方法。一个条件是您必须初始化列表才能访问它的类型。
List<Something> someList = new List<Something>();
String type = someList.runtimeType.toString(); // List<Something>
然后你就可以阅读类型并用它做一些事情。
我不确定你想做什么,但也许你可以写一个像这样的方法:
static void parseList<T>(String input, List<T> list)
请使用更多背景以获得更好的答案。