Запитання з тегом «generics»

Генеріки - це форма параметричного поліморфізму, що зустрічається в різних мовах, включаючи мови NET, Java, Swift та Rust.

7
StringD Dictionary vs Dictionary <рядок, рядок>
Хтось уявляє, які практичні відмінності існують між об'єктом System.Collections.Specialized.StringDictionary та System.Collections.Generic.Dictionary? Раніше я використовував їх обох, не надто замислюючись про те, які ефективніші результати, краща робота з Linq чи надання будь-яких інших переваг. Будь-які думки чи пропозиції щодо того, чому я повинен використовувати одне над іншим?

9
Що є реальним прикладом загального <? супер T>?
Я розумію, що &lt;? super T&gt;представляє будь-який супер клас T(батьківський клас Tбудь-якого рівня). Але я справді намагаюся уявити будь-який приклад із реального життя для цього загального зв’язаного символу. Я розумію, що &lt;? super T&gt;означає, і я бачив цей метод: public class Collections { public static &lt;T&gt; void copy(List&lt;? super T&gt; …

2
scala - будь-яке проти підкреслення в дженериках
У чому полягає різниця між такими загальними визначеннями в Scala: class Foo[T &lt;: List[_]] і class Bar[T &lt;: List[Any]] Мої кишки говорять мені, що вони приблизно однакові, але останнє є більш явним. Я знаходжу випадки, коли перший компілює, а другий ні, але не можу покласти руку на точну різницю. Дякую! …

7
Загальне ключове слово Java
Я перебирав ці теми Дженерики ..? Супер Т Обмеження дженериків ключовим словом "супер" Однак я все ще, здається, збився з superключовим словом: Коли ми оголошуємо колекцію таким чином: List&lt;? super Number&gt; list = null; list.add(new Integer(0)); // this compiles list.add(new Object()); // this doesn't compile чи не повинно бути навпаки …
76 java  generics 

3
Відлиття масиву до IEnumerable <T>
Припустимо, у вас є базовий Employeeклас як такий: class Employee { public string Name; public int Years; public string Department; } Тоді (в окремому класі) у мене є такі фрагменти коду (я думаю, я розумію всі, крім останнього): Я вважаю, що наступний фрагмент коду працює, оскільки масив ініціалізатора створює масив …
76 c#  arrays  generics  casting 

5
IUnityContainer.Resolve <T> видає помилку, стверджуючи, що її не можна використовувати з параметрами типу
Вчора я впровадив код: CustomerProductManager productsManager = container.Resolve&lt;CustomerProductManager&gt;(); Це було складно і робоче. Сьогодні (мабуть, я щось змінив) я постійно отримую помилку: Неродовий метод 'Microsoft.Practices.Unity.IUnityContainer.Resolve (System.Type, рядок, параметри Microsoft.Practices.Unity.ResolverOverride [])' не можна використовувати з аргументами типу Мій колега має однаковий вихідний код і не має однакову помилку. Чому? Як вирішити …

5
Помилка в компіляторі eclipse або в javac (“параметри типу T неможливо визначити”)
Наступний код public class GenericsTest2 { public static void main(String[] args) throws Exception { Integer i = readObject(args[0]); System.out.println(i); } public static &lt;T&gt; T readObject(String file) throws Exception { return readObject(new ObjectInputStream(new FileInputStream(file))); // closing the stream in finally removed to get a small example } @SuppressWarnings("unchecked") public static &lt;T&gt; …
74 java  eclipse  generics 

3
Створення родової властивості
У мене є клас, який зберігає серіалізоване значення та тип. Я хочу мати властивість / метод, що повертає вже відлите значення: public String Value { get; set; } public Type TheType { get; set; } public typeof(TheType) CastedValue { get { return Convert.ChangeType(Value, typeof(_Type)); } Чи можливо це в C …
74 c#  .net  generics  properties 

4
Чому тип повернення лямбда не перевіряється під час компіляції?
Використовуваний посилання методу має тип повернення Integer. Але несумісне Stringдозволено в наступному прикладі. Як виправити withдекларацію методу, щоб забезпечити безпеку типу посилання методу без ручного введення? import java.util.function.Function; public class MinimalExample { static public class Builder&lt;T&gt; { final Class&lt;T&gt; clazz; Builder(Class&lt;T&gt; clazz) { this.clazz = clazz; } static &lt;T&gt; Builder&lt;T&gt; …

4
Яка різниця між <? розширює Base> і <T розширює Base>?
У цьому прикладі: import java.util.*; public class Example { static void doesntCompile(Map&lt;Integer, List&lt;? extends Number&gt;&gt; map) {} static &lt;T extends Number&gt; void compiles(Map&lt;Integer, List&lt;T&gt;&gt; map) {} static void function(List&lt;? extends Number&gt; outer) { doesntCompile(new HashMap&lt;Integer, List&lt;Integer&gt;&gt;()); compiles(new HashMap&lt;Integer, List&lt;Integer&gt;&gt;()); } } doesntCompile() не вдалося компілювати: Example.java:9: error: incompatible types: HashMap&lt;Integer,List&lt;Integer&gt;&gt; …

5
Як зловити всі варіанти загального винятку в C #
Мені хотілося б спіймати всі варіанти загального винятку класу винятків, і мені було цікаво, чи є спосіб зробити це без безлічі блоків вилову. Наприклад, скажіть, що у мене клас виключень: public class MyException&lt;T&gt; : Exception { public string MyProperty { get; } public MyException(T prop) : base(prop.ToString()) { MyProperty = …
22 c#  generics  exception 

1
Чому параметр типу сильніше, ніж параметр методу
Чому це public &lt;R, F extends Function&lt;T, R&gt;&gt; Builder&lt;T&gt; withX(F getter, R returnValue) {...} тоді суворіші public &lt;R&gt; Builder&lt;T&gt; with(Function&lt;T, R&gt; getter, R returnValue) {...} Це подальше дослідження на тему Чому тип повернення лямбда не перевіряється під час компіляції . Я виявив , використовуючи метод , withX()як .withX(MyInterface::getLength, "I am …

3
Вибір підпису методу для вираження лямбда з кількома типовими цільовими типами
Я відповідав на запитання і наткнувся на сценарій, який я не можу пояснити. Розглянемо цей код: interface ConsumerOne&lt;T&gt; { void accept(T a); } interface CustomIterable&lt;T&gt; extends Iterable&lt;T&gt; { void forEach(ConsumerOne&lt;? super T&gt; c); //overload } class A { private static CustomIterable&lt;A&gt; iterable; private static List&lt;A&gt; aList; public static void main(String[] …
11 java  generics  lambda  javac  ecj 

1
Чому компілятор вибирає цей загальний метод з параметром типу класу, коли викликається непов'язаним типом інтерфейсу?
Розглянемо наступні два класи та інтерфейс: public class Class1 {} public class Class2 {} public interface Interface1 {} Чому другий виклик mandatoryвикликати перевантажений метод з Class2, якщо getInterface1і Interface1не має ніякого відношення Class2? public class Test { public static void main(String[] args) { Class1 class1 = getClass1(); Interface1 interface1 = …

1
Довідник методу та дженерики в Java-8
Я стикаюся з проблемою з посиланням на метод у поєднанні з загальними типами. У нас є код, куди нам потрібно викликати перевантажений метод, але він не вдається з помилкою: Неможливо вирішити значення m1 () Я спростив свою проблему, щоб зрозуміти, в чому проблема. Наступний код не вдається: public class Test …
11 java  generics  lambda  java-8 

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