【发布时间】:2015-05-30 23:30:48
【问题描述】:
我试图了解使用泛型和对象之间的区别。我已经阅读了一些与 Java 相关的答案(请参阅https://stackoverflow.com/a/5207175/1349754),我发现差异非常明显 - 如果我们使用 Object 作为输入参数类型,则函数/方法返回 (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 基类的区别。
【问题讨论】: