如何在Dart中使泛型类型成为可选的?

plupiseo  于 2023-04-27  发布在  其他
关注(0)|答案(1)|浏览(153)

我有一个类,它使用了一个泛型类型参数,但我想让它成为可选的,这样它就可以被指定或省略。我如何在Dart中做到这一点?
下面是我试图实现的一个例子:

class MyClass<T?> {

}

void main() {
  var myObject1 = MyClass<String>();
  var myObject2 = MyClass(); // generic type is optional and defaults to dynamic
}

然而,当我尝试运行这段代码时,我在类型参数后面的问号(?)上得到了一个语法错误。我做错了什么?

ymdaylpp

ymdaylpp1#

这是通过正常使用类型参数来实现的。当类型参数被省略时,使用最允许的类型。

class Class1<T> { }
class Class2<T extends Object> { }
class Class3<T extends num> { }

void main() {
  Class1<String>(); // Class1<String>
  Class1();         // Class1<dynamic>

  Class2<String>(); // Class2<String>
  Class2();         // Class2<Object> (non-nullable!)

  Class3<String>(); // Compile-time error
  Class3<int>();    // Class3<int>
  Class3();         // Class3<num>
};

相关问题