Лучшие generics вопросы ИТ разработчиков

  • 4 голосов
  • 0 ответов
  • 0 просмотров
0 ответов

Коллекции обобщений «Не могу создать экземпляр типа ArrayList <? расширяет OpDTO> »

Судя по тому, что я прочитал, я думаю, что это невозможно, но я хотел бы быть уверен. У меня есть классOpDTO и несколько других*DTO extends OpDTO, Затем я хочу иметь метод для извлечения только определенных элементов из списков этих дочерних DTO ...

Задан 01 Jul 2013, 16:55 от Luis Sep
  • 19 голосов
  • 4 ответа
  • 0 просмотров
4 ответа

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

ли что-то похожее на этот шаблон C ++? template <int A> class B { int f() { return A; } }Я хочу сделать каждый экземпляр B <1>, B <2> и т. Д. (Например, кортеж) разным типом.

Задан 08 Jan 2011, 22:25 от Andrew
  • 484 голосов
  • 11 ответов
  • 0 просмотров
11 ответов

Как я могу вернуть NULL из универсального метода в C #?

У меня есть общий метод с этим (фиктивным) кодом (да, я знаю, что в IList есть предикаты, но мой код использует не IList, а какую-то другую коллекцию, в любо...

Задан 19 Nov 2008, 14:51 от 6 revs, 3 users 71%
  • 6 голосов
  • 0 ответов
  • 0 просмотров
0 ответов

; и что, чтобы получить реальный необработанный класс, вы должны явно квалифицировать его как

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

Задан 25 Mar 2011, 03:09 от Dave
  • -1 голос
  • 4 ответа
  • 0 просмотров
4 ответа

Вы, вероятно, хотите назвать неограниченный тип, чтобы вы могли ссылаться на него.

я есть три класса: public abstract class fileHandler<Key extends Object, Value extends Object> { } public A extends fileHandler<String, String[]> { } public B extends fileHandler<String, String> { }Теперь в моей основной функции я делаю ...

Задан 25 Mar 2011, 22:25 от user656189
  • 0 голосов
  • 0 ответов
  • 0 просмотров
0 ответов

Как я могу получить тип подпункта TObjectList <T> исключительно по информации RTTI (то есть без использования какого-либо фактического экземпляра объекта) в Delphi?

Я реализую универсальный код для потоковой передачи произвольных объектов Delphi с использованием RTTI, и для того, чтобы заставить это работать (более конкр...

Задан 08 Mar 2015, 01:21 от QuestionOverflow
  • 15 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Почему разница в объявлении общих списков?

Я хочу разделить два списка. Первый - это список целых чисел. Я расцениваю это как: List<Integer> ints= Arrays.asList(1,2,3);Работает нормально. Второй список объектов. Я заявляю это как: List<Object> objs= Arrays.asList(1,2.13,"three");Но это ...

Задан 30 Mar 2012, 11:56 от Dipesh Gupta
  • 14 голосов
  • 3 ответа
  • 0 просмотров
3 ответа

Обходной путь для ограничения универсального атрибута C #

Как обсуждалосьВот [https://stackoverflow.com/questions/294216/why-does-c-sharp-forbid-generic-attribute-types] C # не поддерживает объявление общих атрибутов. Итак, мне не разрешено делать что-то вроде: [Audit<User> (UserAction.Update)] public ...

Задан 20 Mar 2012, 14:19 от Custodio
  • 37 голосов
  • 5 ответов
  • 0 просмотров
5 ответов

List <? расширяет MyType>

У меня есть вопрос Java о дженериках. Я объявил общий список: List<? extends MyType> listOfMyType;Затем в некотором методе я пытаюсь создать экземпляр и добавить элементы в этот список: listOfMyType = new ArrayList<MyType>(); ...

Задан 27 May 2009, 21:10 от Lancelot
  • 6 голосов
  • 4 ответа
  • 0 просмотров
4 ответа

C # & generics - почему метод в базовом классе вызывается вместо нового метода в производном классе?

Если аргумент общего типа (вызывающего класса или вызывающего метода) ограничен с помощьюwhere T : Base новый метод в T == Derived не вызывается, вместо этого вызывается метод в Base. Почему тип T игнорируется при вызове метода, хотя он должен ...

Задан 24 May 2012, 16:19 от Roland Pihlakas
  • 10 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Что подразумевается под параметрами общего типа

Итак, я наткнулся на ответ от Servy (https://stackoverflow.com/a/15098242/496680 [https://stackoverflow.com/a/15098242/496680]) и часть его кода делает это: public static int BinarySearch<TSource, TKey>(...)для метода расширения, но он называет ...

Задан 26 Feb 2013, 21:37 от Steve's a D
  • 4 голосов
  • 3 ответа
  • 0 просмотров
3 ответа

Два метода для создания универсальных массивов

Я изучил следующие два метода для создания универсальных массивов. Один @SuppressWarnings("unchecked") static <T> T[] array1(final Class<T> elementType, final int size) { return (T[]) Array.newInstance(elementType, size); }А другой static <T> ...

Задан 20 Jun 2013, 03:28 от Jin Kwon
  • 10 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

ObservableCollection: вызов OnCollectionChanged с несколькими новыми элементами

обратите внимание, что я пытаюсь использовать действие NotifyCollectionChangedAction.Add вместо .Reset. последний действительно работает, но он не очень эффе...

Задан 21 Jul 2010, 15:15 от Sonic Soul
  • 9 голосов
  • 4 ответа
  • 0 просмотров
4 ответа

Как вызвать универсальный метод расширения с отражением?

Я написал метод расширенияGenericExtension, Теперь я хочу вызвать метод расширенияExtension, Но ценностьmethodInfo всегда ноль. public static class MyClass { public static void GenericExtension<T>(this Form a, string b) where T : Form { // ...

Задан 10 Apr 2013, 13:19 от David
  • 9 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

не может получить доступ к '<init>', это 'public / * package * /' в 'TypeToken'

ю много подобных вопросов здесь, в StackOverflow, но мой вопрос не решил. У меня есть общий класс данных: data class ServiceCall<out T>(val result: T?, val exception: String?, val pagination: String?, val stringResult: String?)Я пытаюсь ...

Задан 25 Sep 2017, 08:48 от Bhuvanesh BS
  • 10 голосов
  • 3 ответа
  • 0 просмотров
3 ответа

Не идеально, и если я правильно помню, это все равно не поймает.

ли какой-либо флаг компилятора Java, который можно передать, чтобы сказать компилятору запретить использование необработанных типов? То есть для любого универсального класса пусть компилятор принудительно использует параметризованную версию, а в ...

Задан 30 Mar 2009, 16:15 от Kris Nuttycombe
  • 10 голосов
  • 4 ответа
  • 0 просмотров
4 ответа

Код обновлен, поэтому он должен скомпилироваться. Теперь это имеет больше смысла?

я есть эти типы: public class GenericDao<T> { public T Save(T t) { return t; } } public abstract class DomainObject { // Some properties protected abstract dynamic Dao { get; } public virtual void Save() { var dao = Dao; dao.Save(this); } } ...

Задан 12 Jan 2011, 22:08 от kelloti
  • 48 голосов
  • 5 ответов
  • 0 просмотров
5 ответов

в синтаксисе Java, класс <? Что-то расширяет>

Class<? extends Something> Вот моя интерпретация, это шаблон класса, но класс? означает, что имя класса не определено и расширяет класс Something. если что-то не так с моей интерпретацией, дайте мне знать.

Задан 07 Dec 2011, 21:29 от lilzz
  • 40 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

https://msdn.microsoft.com/en-us/library/ms379564.aspx

акое дженерики в C #, проиллюстрированные на простом примере? Какие статьи или веб-сайты по этой теме?

Задан 30 Dec 2010, 07:41 от thevan
  • 4 голосов
  • 4 ответа
  • 0 просмотров
4 ответа

Почему этот бросок невозможен?

interface IFolderOrItem<TFolderOrItem> where TFolderOrItem : FolderOrItem {} abstract class FolderOrItem {} class Folder : FolderOrItem {} abstract class Item : FolderOrItem {} class Document : Item {}Теперь я пытаюсь сделать что-то вроде ...

Задан 07 May 2009, 08:18 от Andreas Niedermair
  • 5 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Инициализация общих статических полей

Мне просто интересно узнать следующий код: public static class Container<T> { public static readonly T[] EmptyArray = new T[0]; }Как я понял, статический класс Container будет инициализирован при выполнении следующего кода: ... var emptyArray = ...

Задан 16 Sep 2011, 00:30 от danyloid
  • 2 голосов
  • 0 ответов
  • 0 просмотров
0 ответов

Могу ли я создать универсальный метод, который принимает тип значения или ссылочный тип, но всегда возвращает обнуляемый тип

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

Задан 24 Oct 2013, 14:13 от Colin
  • 10 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

, но не наоборот.

оложим, у нас есть предикат, объявленный какPredicate<? super SomeClass>, Я бы наивно ожидал, что это будет применимо к любому суперклассуSomeClass вверх по иерархии, в том числеObject. Однако этот предикат не применим кObject, Я получаю ...

Задан 09 May 2018, 08:26 от lexicore
  • 1 голос
  • 1 ответ
  • 0 просмотров
1 ответ

 тоже дает ошибку :(

я два класса class Base { } class Derived : Base { }Base base = new Derived(); нет ошибки компиляции если я сделаюICollection<Base> collBase = new List<Derived>(); это дает ошибку компиляции. Есть ли другие альтернативы, чтобы решить эту проблему?

Задан 08 Jun 2011, 12:49 от Praveen
  • 21 голос
  • 0 ответов
  • 0 просмотров
0 ответов

Существует ли общее ограничение C # для типов «действительное число»? [Дубликат]

Возможный дубликат:C # общее ограничение только для целых чиселПоздравил! Яя пытаюсь настроить декартову систему координат в C #, но я неЯ не хочу ограничива...

Задан 28 Aug 2009, 16:18 от Syndog
  • 12 голосов
  • 0 ответов
  • 0 просмотров
0 ответов

Общий метод, назначенный делегату

Я был немного озадачен делегатами и общими методами. Можно ли назначить делегата для метода с параметром универсального типа? то есть: //This doesn't allow me to pass a generic parameter with the delegate. public delegate void ...

Задан 08 Dec 2013, 03:43 от 10001110101
  • 138 голосов
  • 8 ответов
  • 0 просмотров
8 ответов

Почему массивы ковариантны, а дженерики инвариантны?

От Эффективной Явы Джошуа Блоха, Массивы отличаются от универсального типа двумя важными способами. Первые массивы ковариантны. Обобщения являются инвариантами.Ковариант просто означает, что если X является подтипом Y, то X [] также будет ...

Задан 06 Sep 2013, 21:16 от eagertoLearn
  • 8 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Ничего не отвечай на ответ Хэмиша, он на 100% прав. Но если вы хотите очень простое решение без какого-либо объяснения или просто сработать код, при работе с массивом протокола generics, используйте это:

ой код: protocol SomeProtocol { } class A: SomeProtocol { } func f1<T: SomeProtocol>(ofType: T.Type, listener: (T?) -> Void) { } func f2<T: SomeProtocol>(ofType: T.Type, listener: ([T]?) -> Void) { } func g() { let l1: (SomeProtocol?) -> Void = ...

Задан 08 Jul 2017, 22:01 от frangulyan
  • 25 голосов
  • 0 ответов
  • 0 просмотров
0 ответов

Если вы хотите сделать это для многомерных массивов, будет работать следующий рекурсивный код

бы у меня был public <T> doSomething(T[] array) { }как я могу получитьT.class изarray? Если я сделаюarray.getClass() это меня заводитT[].class вместо.

Задан 19 Jan 2011, 16:08 от Jason S
Page 5 of 42