Что означает отсутствие дженериков в программировании? - PullRequest
0 голосов
/ 21 марта 2010

В комментариях к этому ответу кто-то говорит

Я должен понизить рекомендацию Apache Commons в целом, поскольку это действительно шанс 50:50, если вы найдете что-то полезное илине.Там, конечно, много драгоценных камней, но есть также много плохих и устаревших вещей, например, беспокоящий недостаток Generics на данный момент просто непростителен - даже Java 5, представившая их, достигла EOL!

В этом контексте, что означает «недостаток дженериков»? Можете ли вы объяснить это с точки зрения непрофессионала?

Ответы [ 3 ]

6 голосов
/ 21 марта 2010

Упомянутый «недостаток обобщений» относится к тому факту, что API предоставляет неуниверсальные методы и классы, то есть методы, которые работают на Object и обычно вынуждают пользователя использовать приведение типов и теряют некоторую безопасность типов. Универсальные API имеют параметры типов и работают с объектами этих типов без необходимости приведения и поддержания безопасности типов во время компиляции. Сравните с использованием ArrayList с использованием ArrayList<T>:

// Non-generic (before Java 5)
ArrayList l = /*...*/;
Foo x = (Foo) l.get(42);
l.add(new Bar()); // Compiler is fine with this

// Generic (from Java 5 onwards)
ArrayList<Foo> l = /*...*/;
Foo x = l.get(42);
l.add(new Bar()); // Compiler complains that you can't add Bar to a list of Foo
0 голосов
/ 22 марта 2010

Обобщения позволяют создавать методы и классы, которые работают с различными типами объектов. Без использования обобщений вам придется приводить к типу объекта и обратно и терять некоторую безопасность типов.

Узнайте больше о том, что такое дженерики здесь .

0 голосов
/ 21 марта 2010

Без обобщений вы не сможете «обобщить» ваш код, то есть вы не сможете использовать один и тот же код с разными типами объектов.

...