Запитання з тегом «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 code, would you // …

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; }; І деякі інструменти: Меч.h class Sword : public Tool{ public: Sword(){ this->name="Sword"; } int attack; }; Щит.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
Generics vs загальний інтерфейс?
Я не пам'ятаю, коли я писав загальний клас минулого разу. Кожен раз, коли я думаю, що мені це потрібно після роздумів, я роблю висновок, що цього не роблю. Друга відповідь на це питання змусила мене попросити роз'яснення (оскільки я поки не можу коментувати, я поставила нове запитання). Тому візьмемо даний …

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 generics - це функція, яка використовується виключно для написання бібліотеки, а не для реального кодування. C ++ - мова програмування ОО; templateє необов'язковою та ухиляється функцією Хоча ці люди сильно покладаються на бібліотеки, написані за допомогою загального програмування (наприклад, STL, контейнери Java). …
20 java  c++  templates  generics 

2
Чому в C # є нове () обмеження, але немає іншого подібного обмеження?
У C # generics ми можемо оголосити обмеження для параметра типу, Tщоб мати конструктор за замовчуванням, сказавши where T : new(). Однак ніякі інші види таких обмежень не є дійсними - new(string)наприклад, тощо. Що з мовної розробки та / або впровадження, що є причиною цього? Чи є щось у тому, …


2
Чи корисний параметричний поліморфізм вищого рангу?
Я впевнений, що всі знайомі із загальними методами форми: T DoSomething&lt;T&gt;(T item) Цю функцію також називають параметрично поліморфною (ПП), конкретно ПП -1-го рангу . Скажімо, цей метод можна представити за допомогою об'єкта функції форми: &lt;T&gt; : T -&gt; T Тобто &lt;T&gt;означає, що він приймає параметр одного типу і T -&gt; …

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.