« Загрязнение кучи », как в типах, не подлежащих повторному определению (Учебные руководства Java ™> Изучение языка Java> Обобщения (Обновлено)) Почему это так называется?...
Мета техника, которая позволяет отложить настройку надежного типа на время выполнения.
« Загрязнение кучи », как в типах, не подлежащих повторному определению (Учебные руководства Java ™> Изучение языка Java> Обобщения (Обновлено)) Почему это так называется?...
Я несколько раз видел на этом сайте сообщения, которые осуждают реализацию обобщений в Java. Теперь я могу честно сказать, что у меня не было проблем с их использованием. Тем не менее, я не пытался сделать общий класс самостоятельно. Итак, какие у вас проблемы с общей поддержкой...
В последнее время у меня была привычка «маскировать» коллекции Java с понятными для человека именами классов. Несколько простых примеров: // Facade class that makes code more readable and understandable. public class WidgetCache extends Map<String, Widget> { } Или же: // If you saw a...
Просматривая некоторый код, я заметил возможность изменить его, чтобы использовать дженерики. (Запутанный) код выглядит так: public void DoAllTheThings(Type typeOfTarget, object[] possibleTargets) { var someProperty = typeOfTarget.GetProperty(possibleTargets[0]); ... } Этот код можно заменить на...
Например, у меня есть игра, в которой есть несколько инструментов для повышения способности игрока: 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...
Хотите улучшить этот пост? Предоставьте подробные ответы на этот вопрос, включая цитаты и объяснение того, почему ваш ответ правильный. Ответы без достаточной детализации могут быть отредактированы или удалены. Общепринято, что дженерики Java не работают в некоторых важных аспектах. Комбинация...
Давайте предположим, что у меня есть два класса, которые выглядят так (первый блок кода и общая проблема связаны с C #): class A { public int IntProperty { get; set; } } class B { public int IntProperty { get; set; } } Эти классы не могут быть изменены каким-либо образом (они являются частью...
Я не помню, когда я писал общий класс в прошлый раз. Каждый раз, когда я думаю, что мне это нужно, после некоторого размышления я делаю вывод, что нет. Второй ответ на этот вопрос заставил меня попросить разъяснений (поскольку я пока не могу комментировать, я сделал новый вопрос). Итак, давайте...
Я остаюсь в среде, где люди верят: Обобщения Java являются функцией, используемой исключительно для написания библиотеки, а не для реального кодирования. C ++ является языком программирования OO; templateявляется необязательной функцией, которую можно избежать Хотя эти люди очень полагаются на...
AFAIK, мой класс extendsродительских классов и implementsинтерфейсов. Но я сталкиваюсь с ситуацией, когда я не могу использовать implements SomeInterface. Это объявление универсальных типов. Например: public interface CallsForGrow {...} public class GrowingArrayList <T implements...
Кажется, у меня неправильное понимание разницы между <Foo>и <? extends Foo>. Из моего понимания, если бы мы имели ArrayList<Foo> foos = new ArrayList<>(); Это указывает на то, что объекты этого типа Fooмогут быть добавлены в этот список массивов. Поскольку подклассы Fooтакже...
В обобщениях C # мы можем объявить ограничение для параметра типа, Tимеющего конструктор по умолчанию, например where T : new(). Тем не менее, никакие другие виды ограничений, как это не действует, new(string)например, и т. Д. Что является причиной этого с точки зрения языкового дизайна и / или...
Предположим, у меня есть эта иерархия классов ... public abstract class Animal { public abstract void eat(); public abstract void talk(); } class Dog extends Animal { @Override public void eat() { } @Override public void talk() { } } class Cat extends Animal { @Override public void eat() { }...
Это вопрос с точки зрения внутренних возможностей компилятора. Меня интересуют обобщения, а не шаблоны (C ++), поэтому я пометил вопрос с помощью C #. Не Java, потому что AFAIK дженерики в обоих языках отличаются в реализации. Когда я смотрю на языки без обобщений, это довольно просто, вы можете...
Я уверен, что все знакомы с общими методами формы: T DoSomething<T>(T item) Эта функция также называется параметрически полиморфной (ПП), а именно ПП ранга 1 . Допустим, этот метод может быть представлен с помощью функционального объекта в форме: <T> : T -> T То есть...
В настоящее время этот вопрос не очень подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, споры, опрос или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и,...
В объектно-ориентированных языках, которые поддерживают параметры универсального типа (также называемые шаблонами классов и параметрическим полиморфизмом, хотя, конечно, каждое имя несет в себе различные коннотации), часто можно указать ограничение типа для параметра типа, например, для его...
Согласно правилу № 4 « Object Calisthenics» Джеффа Бэй (RTF) в «Антологии ThoughtWorks», рекомендуется « Использовать первоклассные коллекции ». Правило 4: Коллекции первого класса Применение этого правила простое: любой класс, содержащий коллекцию, не должен содержать других переменных-членов....
В другом вопросе StackExchange я заметил, что кто-то использует этот прототип: void DoSomething<T>(T arg) where T: SomeSpecificReferenceType { //Code.... } Принимая во внимание, что есть только один тип ограничений ( SomeSpecificReferenceType), в чем разница и преимущество такого написания, а...
Мой тип IDE ( NetBeans ) проверяет мой, Collectionsпока я набираю код. Но тогда, почему я должен бросить возвращенный объект Object.clone()? Что хорошо. Нет вреда, нет фола. Но все же я не понимаю. Является ли проверка типов без приведения возвращаемого объекта Object.clone()невозможной? Дженерики...