Я пытаюсь понять, в чем разница между использованием 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.
Пожалуйста, не могли бы вы привести пример кода, в котором, по-видимому, выгода или дженерики. Я все еще не вижу разницы. –
Например, если вы определяете 'a = new TestGeneric()' вы получите предупреждение _ Тип аргумента 'int' не может быть присвоен типу параметра 'String'_, если вы вызов 'a.Pass (1);' –
Хм, это имеет смысл! Я начинаю понимать) –