Pytania otagowane jako generics

Generics to forma parametrycznego polimorfizmu występująca w wielu językach, w tym w językach .NET, Java, Swift i Rust.

6
Jak wiosną Autowire Bean typu generycznego <T>?
Mam fasolę, Item&lt;T&gt;która jest wymagana do autoprzewodowania w @Configurationklasie. @Configuration public class AppConfig { @Bean public Item&lt;String&gt; stringItem() { return new StringItem(); } @Bean public Item&lt;Integer&gt; integerItem() { return new IntegerItem(); } } Ale kiedy próbuję @Autowire Item&lt;String&gt;, otrzymuję następujący wyjątek. "No qualifying bean of type [Item] is defined: expected …



10
Iteruj wartości wyliczeniowe przy użyciu generycznych języka Java
Próbuję znaleźć sposób na iterację wartości wyliczenia podczas korzystania z typów ogólnych. Nie wiem, jak to zrobić lub czy jest to możliwe. Poniższy kod ilustruje to, co chcę zrobić. Zauważ, że kod T.values ​​() nie jest prawidłowy w poniższym kodzie. public class Filter&lt;T&gt; { private List&lt;T&gt; availableOptions = new ArrayList&lt;T&gt;(); …

8
Jak porównać wartości typów ogólnych?
Jak porównać wartości typów ogólnych? Zredukowałem to do minimalnej próbki: public class Foo&lt;T&gt; where T : IComparable { private T _minimumValue = default(T); public bool IsInRange(T value) { return (value &gt;= _minimumValue); // &lt;-- Error here } } Błąd: Operator „&gt; =” nie może być stosowany do operandów typu „T” …

8
C # Generics nie zezwala na ograniczenia typu delegata
Czy można w C # zdefiniować taką klasę, że class GenericCollection&lt;T&gt; : SomeBaseCollection&lt;T&gt; where T : Delegate Za całe życie nie mogłem tego zrobić wczoraj w .NET 3.5. Próbowałem użyć delegate, Delegate, Action&lt;T&gt; and Func&lt;T, T&gt; Wydaje mi się, że powinno to być w jakiś sposób dopuszczalne. Próbuję zaimplementować własną …

7
Co oznacza „T” w C #?
Mam tło VB i przechodzę do C # dla mojej nowej pracy. Generalnie staram się też polepszyć .NET. Widziałem słowo kluczowe „T” często używane w próbkach, które ludzie publikują. Co oznacza „T” w języku C #? Na przykład: public class SomeBase&lt;T&gt; where T : SomeBase&lt;T&gt;, new() Co robi T? Dlaczego …
79 c#  .net  generics 

4
Dlaczego typ zwracanej wartości lambda nie jest sprawdzany podczas kompilacji?
Użyte odwołanie do metody ma typ zwracany Integer. Jednak niezgodność Stringjest dozwolona w poniższym przykładzie. Jak naprawić withdeklarację metody, aby uzyskać bezpieczny typ referencyjny metody bez ręcznego rzutowania? 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 …

4
Jaka jest różnica między <? rozszerza bazę> i <T rozszerza bazę>?
W tym przykładzie: 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() nie można skompilować z: Example.java:9: error: incompatible types: …

5
Jak złapać wszystkie warianty ogólnego wyjątku w C #
Chciałbym wyłapać wszystkie warianty ogólnej klasy wyjątków i zastanawiałem się, czy można to zrobić bez wielu bloków wyłapywania. Powiedzmy na przykład, że mam klasę wyjątków: public class MyException&lt;T&gt; : Exception { public string MyProperty { get; } public MyException(T prop) : base(prop.ToString()) { MyProperty = prop?.ToString(); } } oraz dwie …
22 c#  generics  exception 

1
Dlaczego parametr typu jest silniejszy niż parametr metody?
Dlaczego jest public &lt;R, F extends Function&lt;T, R&gt;&gt; Builder&lt;T&gt; withX(F getter, R returnValue) {...} bardziej rygorystyczne public &lt;R&gt; Builder&lt;T&gt; with(Function&lt;T, R&gt; getter, R returnValue) {...} Jest to kontynuacja Dlaczego nie jest sprawdzany typ zwrotu lambda w czasie kompilacji . Znalazłem metodę withX()podobną .withX(MyInterface::getLength, "I am not a Long") produkuje żądany …

3
Wybór sygnatury metody dla wyrażenia lambda z wieloma pasującymi typami docelowymi
Odpowiadałem na pytanie i wpadłem na scenariusz, którego nie potrafię wyjaśnić. Rozważ ten kod: 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[] args) { …
11 java  generics  lambda  javac  ecj 

1
Dlaczego kompilator wybiera tę ogólną metodę z parametrem typu klasy, gdy jest wywoływany z niepowiązanym typem interfejsu?
Rozważ następujące dwie klasy i interfejs: public class Class1 {} public class Class2 {} public interface Interface1 {} Dlaczego drugie wywołanie mandatorywywołuje przeciążoną metodę Class2, jeśli getInterface1i Interface1nie ma związku z Class2? public class Test { public static void main(String[] args) { Class1 class1 = getClass1(); Interface1 interface1 = getInterface1(); …

1
Odwołanie do metody i informacje ogólne w Javie-8
Mam problem z odniesieniem do metody w połączeniu z typami rodzajowymi. Mamy kod, w którym musimy wywołać przeciążoną metodę, ale błąd kończy się niepowodzeniem: Nie można rozwiązać wartości m1 () Uprościłem swój problem, aby wyjaśnić, gdzie leży problem. Następujący kod kończy się niepowodzeniem: public class Test { void test() { …
11 java  generics  lambda  java-8 

4
Problem z właściwościami ogólnymi podczas mapowania typów
Mam bibliotekę, która eksportuje typ narzędzia podobny do następującego: type Action&lt;Model extends object&gt; = (data: State&lt;Model&gt;) =&gt; State&lt;Model&gt;; Ten typ narzędzia pozwala zadeklarować funkcję, która będzie działać jako „akcja”. Otrzymuje ogólny argument, Modelże akcja będzie działać. dataArgument „akcji” jest następnie wpisywane z innego typu użytkowego że eksport; type State&lt;Model extends …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.