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

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

49
Что не так с дженериками Java? [закрыто]

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

46
Хорошая или плохая практика маскировать коллекции Java значимыми именами классов?

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

35
Что такое злоупотребление дженериками?

Просматривая некоторый код, я заметил возможность изменить его, чтобы использовать дженерики. (Запутанный) код выглядит так: public void DoAllTheThings(Type typeOfTarget, object[] possibleTargets) { var someProperty = typeOfTarget.GetProperty(possibleTargets[0]); ... } Этот код можно заменить на...

34
Является ли это запахом кода, чтобы хранить общие объекты в контейнере, а затем получать объекты и выгружать объекты из контейнера?

Например, у меня есть игра, в которой есть несколько инструментов для повышения способности игрока: 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...

29
Хорошая универсальная система типов

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

28
C # Generics - Как избежать избыточного метода?

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

20
Дженерикс против общего интерфейса?

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

20
Как распространить информацию об общем программировании среди членов команды?

Я остаюсь в среде, где люди верят: Обобщения Java являются функцией, используемой исключительно для написания библиотеки, а не для реального кодирования. C ++ является языком программирования OO; templateявляется необязательной функцией, которую можно избежать Хотя эти люди очень полагаются на...

20
Кто расширяет интерфейсы? И почему?

AFAIK, мой класс extendsродительских классов и implementsинтерфейсов. Но я сталкиваюсь с ситуацией, когда я не могу использовать implements SomeInterface. Это объявление универсальных типов. Например: public interface CallsForGrow {...} public class GrowingArrayList <T implements...

20
В чем разница между <? расширяет Foo> и <Foo>

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

19
Почему в C # есть новое ограничение (), но нет другого подобного ограничения?

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

16
Как применяются дженерики?

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

16
Полезен ли параметрический полиморфизм более высокого ранга?

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

16
Что такое хорошее соглашение об именах для универсальных типов в C #? [закрыто]

В настоящее время этот вопрос не очень подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, споры, опрос или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и,...

15
В чем причина использования интерфейса по сравнению с типом с общими ограничениями?

В объектно-ориентированных языках, которые поддерживают параметры универсального типа (также называемые шаблонами классов и параметрическим полиморфизмом, хотя, конечно, каждое имя несет в себе различные коннотации), часто можно указать ограничение типа для параметра типа, например, для его...

15
Почему мы должны предпочтительно использовать первоклассные коллекции?

Согласно правилу № 4 « Object Calisthenics» Джеффа Бэй (RTF) в «Антологии ThoughtWorks», рекомендуется « Использовать первоклассные коллекции ». Правило 4: Коллекции первого класса Применение этого правила простое: любой класс, содержащий коллекцию, не должен содержать других переменных-членов....

14
Зачем использовать универсальный метод с ограничением типа вместо самого типа?

В другом вопросе StackExchange я заметил, что кто-то использует этот прототип: void DoSomething<T>(T arg) where T: SomeSpecificReferenceType { //Code.... } Принимая во внимание, что есть только один тип ограничений ( SomeSpecificReferenceType), в чем разница и преимущество такого написания, а...

13
Если моя IDE такая умная, зачем мне приводить «clone ()»?

Мой тип IDE ( NetBeans ) проверяет мой, Collectionsпока я набираю код. Но тогда, почему я должен бросить возвращенный объект Object.clone()? Что хорошо. Нет вреда, нет фола. Но все же я не понимаю. Является ли проверка типов без приведения возвращаемого объекта Object.clone()невозможной? Дженерики...