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

127
Дженерики Java T vs Object

Мне было интересно, в чем разница между следующими двумя объявлениями методов: public Object doSomething(Object obj) {....} public <T> T doSomething(T t) {....} Есть ли что-то, что вы можете сделать с одним, но не с другим? Я не мог найти этот вопрос где-либо еще на этом...

127
Что означает тильда в угловых скобках при создании универсального класса Java?

Я читал несколько примеров JMockit и нашел этот код: final List<OrderItem> actualItems = new ArrayList<~>(); Что означает тильда в универсальном идентификаторе? Я знаю, что это унарный побитовый оператор НЕ, но я не вижу здесь операнда. Также я попытался скомпилировать его и получил...

126
Протокол не соответствует самому себе?

Почему этот код Swift не компилируется? protocol P { } struct S: P { } let arr:[P] = [ S() ] extension Array where Element : P { func test<T>() -> [T] { return [] } } let result : [S] = arr.test() Компилятор сообщает: «Тип Pне соответствует протоколу P» (или, в более поздних версиях Swift,...

126
Почему в Go нет дженериков?

Отказ от ответственности: я играл в Go всего один день, так что есть хороший шанс, что я многое пропустил. Кто-нибудь знает, почему в Go нет реальной поддержки generics / templates / whatsInAName? Итак, есть общий map, но он предоставляется компилятором, а программист на Go не может написать свою...

125
Соглашение об именах параметров универсального типа для Java (с несколькими символами)?

В некоторых интерфейсах, которые я написал, я хотел бы называть параметры универсального типа более чем одним символом, чтобы сделать код более читабельным. Что-то вроде.... Map<Key,Value> Вместо этого... Map<K,V> Но когда дело доходит до методов, параметры типа выглядят как...

124
Как реализовать IEnumerable <T>

Я знаю, как реализовать не общий IEnumerable, например: using System; using System.Collections; namespace ConsoleApplication33 { class Program { static void Main(string[] args) { MyObjects myObjects = new MyObjects(); myObjects[0] = new MyObject() { Foo = "Hello", Bar = 1 }; myObjects[1] = new...

124
Что означает «Протокол… может использоваться только как общее ограничение, потому что он имеет требования типа Self или связанные с ним»?

Я пытаюсь создать словарь (на самом деле HashSet ) с ключом для настраиваемого протокола в Swift, но он дает мне ошибку в заголовке: Протокол myProtocol может использоваться только в качестве общего ограничения, поскольку он имеет требования типа Self или связанные с ним. и я не могу понять это....

122
Когда использовать общие методы, а когда использовать подстановочные знаки?

Я читаю об общих методах из OracleDocGenericMethod . Меня очень смущает сравнение, когда в нем говорится, когда использовать подстановочные знаки, а когда - общие методы. Цитата из документа. interface Collection<E> { public boolean containsAll(Collection<?> c); public boolean...

120
Использование поля объекта в качестве универсального ключа словаря

Если я хочу использовать объекты в качестве ключей для a Dictionary, какие методы мне нужно будет переопределить, чтобы они сравнивались определенным образом? Скажем, у меня есть класс со свойствами: class Foo { public string Name { get; set; } public int FooID { get; set; } // elided } И я хочу...

120
Возврат «IList» против «ICollection» против «Collection»

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

120
Почему я не могу использовать значение с плавающей запятой в качестве параметра шаблона?

Когда я пытаюсь использовать floatв качестве параметра шаблона, компилятор требует этого кода, пока intработает нормально. Это потому, что я не могу использовать floatв качестве параметра шаблона? #include<iostream> using namespace std; template <class T, T defaultValue> class...

117
Наследовать от универсального базового класса, применить ограничение и реализовать интерфейс на C #

Это вопрос синтаксиса. У меня есть общий класс, который наследуется от универсального базового класса и применяет ограничение к одному из параметров типа. Я также хочу, чтобы производный класс реализовал интерфейс. Да хоть убей, я не могу понять правильный синтаксис. Вот что у меня есть:...

115
Что мне возвращать, если возвращаемый тип метода - Void? (Не недействительно!)

Из-за использования Generics в Java мне пришлось реализовать функцию с Voidвозвращаемым типом: public Void doSomething() { //... } и компилятор требует, чтобы я что-то вернул . Сейчас я просто возвращаюсь null, но мне интересно, хорошая ли это практика кодирования ... Я спрашиваю о V OID, а не v...

114
Что такое «особый класс»?

После неудачной попытки скомпилировать что-то вроде следующего: public class Gen<T> where T : System.Array { } с ошибкой Ограничение не может быть специальным классом System.Array. Я начал задаваться вопросом , что именно это «особый класс»? Кажется, что люди часто получают такую ​​же ошибку,...

113
Общий C # «где ограничение» с определением «любого универсального типа»?

Приведу пример: У меня есть определение общего класса / интерфейса: interface IGenericCar< T > {...} У меня есть другой класс / интерфейс, который я хочу связать с классом выше, например: interface IGarrage< TCar > : where TCar: IGenericCar< (**any type here**) > {...} По сути, я...

113
возврат объекта Void

Как правильно вернуть Voidтип, если он не является примитивом? Например. В настоящее время я использую null, как показано ниже. interface B<E>{ E method(); } class A implements B<Void>{ public Void method(){ // do something return null; }...

112
Как инициализировать List <T> заданным размером (в отличие от емкости)?

.NET предлагает общий контейнер списков, производительность которого практически идентична (см. Вопрос «Производительность массивов и списков»). Однако они совершенно разные по инициализации. Массивы очень легко инициализировать со значением по умолчанию, и по определению они уже имеют определенный...