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

Обобщения являются формой параметрического полиморфизма, встречающейся в ряде языков, включая языки .NET, Java, Swift и Rust.

1252
Как отсортировать список <T> по свойству объекта

У меня есть класс с именем , Orderкоторый имеет свойства , такие как OrderId, OrderDate, Quantity, и Total. У меня есть список этого Orderкласса: List<Order> objListOrder = new List<Order>(); GetOrderList(objListOrder); // fill list of orders Теперь я хочу отсортировать список по одному...

1190
Создать общий метод, ограничивающий перечисление

Я строю функцию для расширения Enum.Parseконцепции, которая Позволяет проанализировать значение по умолчанию в случае, если значение Enum не найдено Нечувствителен к регистру Поэтому я написал следующее: public static T GetEnumFromString<T>(string value, T defaultValue) where T : Enum { if...

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

Из-за реализации обобщений Java вы не можете иметь такой код: public class GenSet<E> { private E a[]; public GenSet() { a = new E[INITIAL_ARRAY_LENGTH]; // error: generic array creation } } Как я могу реализовать это при сохранении безопасности типов? Я видел решение на форумах Java, которое...

1071
Как использовать рефлексию для вызова универсального метода?

Каков наилучший способ вызова универсального метода, когда параметр типа неизвестен во время компиляции, а вместо этого получается динамически во время выполнения? Рассмотрим следующий пример кода - внутри Example()метода, какой самый краткий способ вызвать, GenericMethod<T>()используя...

771
Является ли List <Dog> подклассом List <Animal>? Почему дженерики Java не являются неявно полиморфными?

Я немного озадачен тем, как дженерики Java обрабатывают наследование / полиморфизм. Предположим следующую иерархию - Животное (родитель) Собака - Кот (Дети) Итак, предположим, у меня есть метод doSomething(List<Animal> animals). По всем правилам наследования и полиморфизма я бы предположил,...

729
Что такое PECS (продюсер продвигает Consumer Super)?

На этом вопросе есть ответы на Переполнение стека на русском : Использование подстановочных знаков в Generics Java Я сталкивался с PECS (сокращение от Producer extendsи Consumersuper ), читая дженерики. Может кто-нибудь объяснить мне, как использовать PECS для разрешения путаницы между extendsи...

675
Как получить тип T от члена универсального класса или метода?

Допустим, у меня есть универсальный член в классе или методе, поэтому: public class Foo<T> { public List<T> Bar { get; set; } public void Baz() { // get type of T } } Когда я создаю экземпляр класса, то Tстановится MyTypeObject1, так что класс имеет общий список имущества:...

663
Что такое необработанный тип и почему мы не должны его использовать?

Вопросов: Что такое необработанные типы в Java, и почему я часто слышу, что они не должны использоваться в новом коде? Какая альтернатива, если мы не можем использовать необработанные типы, и как это лучше?...

611
Как я обращаюсь к непроверенным предупреждениям броска?

Затмение дает мне предупреждение о следующей форме: Безопасность типов: непроверенное приведение из объекта в HashMap Это от вызова API, который я не могу контролировать, который возвращает Object: HashMap<String, String> getItems(javax.servlet.http.HttpSession session) { HashMap<String,...

593
Как мне клонировать общий список в C #?

У меня есть общий список объектов в C #, и я хочу клонировать этот список. Элементы в списке являются клонируемыми, но, похоже, нет возможности сделать это list.Clone(). Есть ли простой способ обойти...

589
Как сделать метод, возвращающий тип, универсальным?

Рассмотрим этот пример (типичный для книг ООП): У меня есть Animalкласс, где у каждого Animalможет быть много друзей. И подклассы, как Dog, Duckи Mouseт. Д. , Которые добавляют определенное поведение, как bark(), quack()и т. Д. Вот Animalкласс: public class Animal { private Map<String,Animal>...

576
Создать экземпляр универсального типа в Java?

Можно ли создать экземпляр универсального типа в Java? Я думаю, основываясь на том, что я видел, что ответ no( из-за стирания типа ), но мне было бы интересно, если кто-нибудь увидит что-то, что мне не хватает: class SomeContainer<E> { E createContents() { return what??? } } РЕДАКТИРОВАТЬ:...

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

У меня есть общий метод с этим (фиктивным) кодом (да, я знаю, что в IList есть предикаты, но мой код использует не IList, а какую-то другую коллекцию, в любом случае это не имеет значения для вопроса ...) static T FindThing<T>(IList collection, int id) where T : IThing, new() { foreach T...

510
Почему C # запрещает универсальные типы атрибутов?

Это вызывает исключение во время компиляции: public sealed class ValidatesAttribute<T> : Attribute { } [Validates<string>] public static class StringValidation { } Я понимаю, что C # не поддерживает общие атрибуты. Однако, после долгих поисков, я не могу найти причину. Кто-нибудь знает,...

495
Список <T> или IList <T> [закрыто]

Закрыто . Этот вопрос основан на мнении . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы ответить на него фактами и цитатами, отредактировав этот пост . Закрыто 7 месяцев назад . Может кто-нибудь объяснить мне, почему я хотел бы использовать IList над...

451
Как удалить элементы из общего списка при переборах по нему?

Я ищу лучший шаблон для работы со списком элементов, каждый из которых необходимо обработать, а затем в зависимости от результата удаляются из списка. Вы не можете использовать .Remove(element)внутри foreach (var element in X)(потому что это приводит к Collection was modified; enumeration operation...

446
В чем смысл бриллиантового оператора (<>) в Java 7?

Алмазный оператор в Java 7 позволяет код, подобный следующему: List<String> list = new LinkedList<>(); Однако в Java 5/6 я могу просто написать: List<String> list = new LinkedList(); Я понимаю, что стирание типа это то же самое. (Универсальный в любом случае удаляется во время...