我试着理解使用Generics和Object之间的区别。我已经阅读了一些与Java相关的答案(请参阅https://stackoverflow.com/a/5207175/1349754),我发现差异非常明显 - 函数/方法返回(a)对象,如果我们使用Object作为输入参数类型和(b)实际如果我们使用泛型T,则输入类型。但Dart有自己的行为,这种情况不适用。让我们看看例子:
main() {
// expect Object type
print((new TestObject()).Pass('string').runtimeType);
// expect String type
print((new TestGeneric()).Pass('string').runtimeType);
// both output String type
}
class TestObject {
Object Pass(Object element)
=> element;
}
class TestGeneric<T> {
T Pass(T element)
=> element;
}
我不熟悉使用面向对象的意识形态。所以请问,任何人都可以解释使用泛型而不是Object基类的区别。