Dart中类的Future<T>静态类型无法使用的问题求助
问题解答
错误原因
你写的class MyClass<Future<T>>属于语法错误。Dart中类的泛型参数需要是类型变量(比如<T>这类标识符),而非直接把Future<T>这类嵌套类型作为泛型参数声明。解析器会将这种写法判定为语法不合法,因此抛出Expected to find '>'的编译错误。
正确实现方式
你需要先声明类的泛型参数T,再让call方法返回Future<T>,这样就能满足你的调用需求:
class MyFunction<T> { Future<T> call() async { // 这里返回一个Future<T>的具体实现,示例如下: await Future.delayed(const Duration(seconds: 1)); return defaultValue as T; // 替换为实际的T类型值 } }
调用示例
void main() async { MyFunction<String> func = MyFunction<String>(); String result = await func(); print(result); }
补充说明
如果需要让类本身和Future特性绑定,也可以让类实现FutureOr<T>或直接包装Future实例,但你的核心需求是让类实例可通过await func()获取T类型结果,上述写法已经完全满足。这种实现利用了Dart的可调用类特性,让类实例可以像普通函数一样被调用,配合async/await语法就能直接拿到最终的T类型值。
内容的提问来源于stack exchange,提问作者mathisxy
相关产品推荐
相关产品推荐

