Вопросы с тегом «generics»

Мета техника, которая позволяет отложить настройку надежного типа на время выполнения.


7
Что не так с дженериками Java? [закрыто]
Я несколько раз видел на этом сайте сообщения, которые осуждают реализацию обобщений в Java. Теперь я могу честно сказать, что у меня не было проблем с их использованием. Тем не менее, я не пытался сделать общий класс самостоятельно. Итак, какие у вас проблемы с общей поддержкой Java?
49 java  generics 

6
Хорошая или плохая практика маскировать коллекции Java значимыми именами классов?
В последнее время у меня была привычка «маскировать» коллекции Java с понятными для человека именами классов. Несколько простых примеров: // Facade class that makes code more readable and understandable. public class WidgetCache extends Map<String, Widget> { } Или же: // If you saw a ArrayList<ArrayList<?>> being passed around in the …

4
Что такое злоупотребление дженериками?
Просматривая некоторый код, я заметил возможность изменить его, чтобы использовать дженерики. (Запутанный) код выглядит так: public void DoAllTheThings(Type typeOfTarget, object[] possibleTargets) { var someProperty = typeOfTarget.GetProperty(possibleTargets[0]); ... } Этот код можно заменить на дженерики, например, так: public void DoAllTheThings<T>(object[] possibleTargets[0]) { var someProperty = type(T).getProperty(possibleTargets[0]); ... } Исследуя преимущества и …
35 generics 

12
Является ли это запахом кода, чтобы хранить общие объекты в контейнере, а затем получать объекты и выгружать объекты из контейнера?
Например, у меня есть игра, в которой есть несколько инструментов для повышения способности игрока: Tool.h class Tool{ public: std::string name; }; И некоторые инструменты: Sword.h class Sword : public Tool{ public: Sword(){ this->name="Sword"; } int attack; }; Shield.h class Shield : public Tool{ public: Shield(){ this->name="Shield"; } int defense; }; …

3
Хорошая универсальная система типов
Хотите улучшить этот пост? Предоставьте подробные ответы на этот вопрос, включая цитаты и объяснение того, почему ваш ответ правильный. Ответы без достаточной детализации могут быть отредактированы или удалены. Общепринято, что дженерики Java не работают в некоторых важных аспектах. Комбинация подстановочных знаков и границ привела к некоторому серьезно нечитаемому коду. Однако, …

8
C # Generics - Как избежать избыточного метода?
Давайте предположим, что у меня есть два класса, которые выглядят так (первый блок кода и общая проблема связаны с C #): class A { public int IntProperty { get; set; } } class B { public int IntProperty { get; set; } } Эти классы не могут быть изменены каким-либо …
28 c#  generics 

1
В чем разница между <? расширяет Foo> и <Foo>
Кажется, у меня неправильное понимание разницы между &lt;Foo&gt;и &lt;? extends Foo&gt;. Из моего понимания, если бы мы имели ArrayList&lt;Foo&gt; foos = new ArrayList&lt;&gt;(); Это указывает на то, что объекты этого типа Fooмогут быть добавлены в этот список массивов. Поскольку подклассы Fooтакже имеют тип Foo, они также могут быть добавлены без …
20 java  generics 

3
Дженерикс против общего интерфейса?
Я не помню, когда я писал общий класс в прошлый раз. Каждый раз, когда я думаю, что мне это нужно, после некоторого размышления я делаю вывод, что нет. Второй ответ на этот вопрос заставил меня попросить разъяснений (поскольку я пока не могу комментировать, я сделал новый вопрос). Итак, давайте возьмем …

4
Кто расширяет интерфейсы? И почему?
AFAIK, мой класс extendsродительских классов и implementsинтерфейсов. Но я сталкиваюсь с ситуацией, когда я не могу использовать implements SomeInterface. Это объявление универсальных типов. Например: public interface CallsForGrow {...} public class GrowingArrayList &lt;T implements CallsForGrow&gt; // BAD, won't work! extends ArrayList&lt;T&gt; Здесь использование implementsсинтаксически запрещено. Сначала я подумал, что использование интерфейса …

8
Как распространить информацию об общем программировании среди членов команды?
Я остаюсь в среде, где люди верят: Обобщения Java являются функцией, используемой исключительно для написания библиотеки, а не для реального кодирования. C ++ является языком программирования OO; templateявляется необязательной функцией, которую можно избежать Хотя эти люди очень полагаются на библиотеки, написанные с использованием универсального программирования (например, STL, контейнеры Java). Если …
20 java  c++  templates  generics 

2
Почему в C # есть новое ограничение (), но нет другого подобного ограничения?
В обобщениях C # мы можем объявить ограничение для параметра типа, Tимеющего конструктор по умолчанию, например where T : new(). Тем не менее, никакие другие виды ограничений, как это не действует, new(string)например, и т. Д. Что является причиной этого с точки зрения языкового дизайна и / или реализации? Есть ли …


2
Полезен ли параметрический полиморфизм более высокого ранга?
Я уверен, что все знакомы с общими методами формы: T DoSomething&lt;T&gt;(T item) Эта функция также называется параметрически полиморфной (ПП), а именно ПП ранга 1 . Допустим, этот метод может быть представлен с помощью функционального объекта в форме: &lt;T&gt; : T -&gt; T То есть &lt;T&gt;означает, что он принимает один параметр …

3
Как применяются дженерики?
Это вопрос с точки зрения внутренних возможностей компилятора. Меня интересуют обобщения, а не шаблоны (C ++), поэтому я пометил вопрос с помощью C #. Не Java, потому что AFAIK дженерики в обоих языках отличаются в реализации. Когда я смотрю на языки без обобщений, это довольно просто, вы можете проверить определение …
16 c#  generics 

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.