Generika sind eine Form des parametrischen Polymorphismus, der in einer Reihe von Sprachen zu finden ist, darunter .NET-Sprachen, Java, Swift und Rust.
Könnte jemand erklären, warum dies in C # .NET 2.0 funktioniert: Nullable<DateTime> foo; if (true) foo = null; else foo = new DateTime(0); ... aber das geht nicht: Nullable<DateTime> foo; foo = true ? null : new DateTime(0); Das letztere Formular gibt mir einen Kompilierungsfehler. "Der Typ des bedingten Ausdrucks …
Dies ist eine vereinfachte Version des fraglichen Codes. Eine generische Klasse verwendet eine andere Klasse mit generischen Typparametern und muss einen der generischen Typen an eine Methode mit varargs-Parametern übergeben: class Assembler<X, Y> { void assemble(X container, Y... args) { ... } } class Component<T> { void useAssembler(T something) { …
Dies ist wahrscheinlich nicht möglich, aber ich habe diese Klasse: public class Metadata<DataType> where DataType : struct { private DataType mDataType; } Es steckt noch mehr dahinter, aber lassen Sie es uns einfach halten. Der generische Typ (DataType) ist durch die where-Anweisung auf Werttypen beschränkt. Ich möchte eine Liste dieser …
Ich habe eine Liste, die wie folgt deklariert ist: List<? extends Number> foo3 = new ArrayList<Integer>(); Ich habe versucht, foo3 3 hinzuzufügen. Ich erhalte jedoch eine Fehlermeldung wie folgt: The method add(capture#1-of ? extends Number) in the type List<capture#1-of ? extends Number> is not applicable for the arguments (ExtendsNumber)
Ich dachte, ich verstehe Java-Generika ziemlich gut, aber dann bin ich in java.lang.Enum auf Folgendes gestoßen: class Enum<E extends Enum<E>> Könnte jemand erklären, wie dieser Typparameter zu interpretieren ist? Bonuspunkte für die Bereitstellung anderer Beispiele dafür, wo ein ähnlicher Typparameter verwendet werden könnte.
Ich versuche, eine Liste von Elementen in einer Sammlung mit einem Schlüssel meiner Wahl zu führen. In Java würde ich Map einfach wie folgt verwenden: class Test { Map<Integer,String> entities; public String getEntity(Integer code) { return this.entities.get(code); } } Gibt es eine äquivalente Möglichkeit, dies in C # zu tun? …
Java-Enums sind großartig. Generika auch. Natürlich kennen wir alle die Einschränkungen des letzteren aufgrund der Typlöschung. Aber eines verstehe ich nicht: Warum kann ich so eine Aufzählung nicht erstellen: public enum MyEnum<T> { LITERAL1<String>, LITERAL2<Integer>, LITERAL3<Object>; } Dieser generische Typparameter <T>könnte dann wiederum an verschiedenen Stellen nützlich sein. Stellen Sie …
Kann jemand im Anschluss an diese Frage in Scala Folgendes erklären: class Slot[+T] (var some: T) { // DOES NOT COMPILE // "COVARIANT parameter in CONTRAVARIANT position" } Ich verstehe den Unterschied zwischen +Tund Tin der Typdeklaration (sie wird kompiliert, wenn ich sie verwende T). Aber wie schreibt man dann …
Was ist der Unterschied zwischen <? super E>und <? extends E>? Wenn Sie sich beispielsweise die Klasse ansehen, java.util.concurrent.LinkedBlockingQueuegibt es die folgende Signatur für den Konstruktor: public LinkedBlockingQueue(Collection<? extends E> c) und zum einen für die Methode: public int drainTo(Collection<? super E> c)
Ich habe eine JSON-Zeichenfolge, die ich in die folgende Klasse deSerialisieren sollte class Data <T> { int found; Class<T> hits } Wie mache ich es? Dies ist der übliche Weg mapper.readValue(jsonString, Data.class); Aber wie erwähne ich, wofür T steht?
Ich habe eine generische Funktion, die einen Webdienst aufruft und die JSON-Antwort zurück zu einem Objekt serialisiert. class func invokeService<T>(service: String, withParams params: Dictionary<String, String>, returningClass: AnyClass, completionHandler handler: ((T) -> ())) { /* Construct the URL, call the service and parse the response */ } Was ich versuche zu …
Gemäß der Java Language Sepecification , 3. Auflage: Es ist ein Fehler zur Kompilierungszeit, wenn eine generische Klasse eine direkte oder indirekte Unterklasse von ist Throwable. Ich möchte verstehen, warum diese Entscheidung getroffen wurde. Was ist los mit generischen Ausnahmen? (Soweit ich weiß, handelt es sich bei Generika lediglich um …
Dies ist wahrscheinlich eine Anfängerfrage, aber Google hat überraschenderweise keine Antwort geliefert. Ich habe diese eher künstliche Methode T HowToCast<T>(T t) { if (typeof(T) == typeof(string)) { T newT1 = "some text"; T newT2 = (string)t; } return t; } Ich komme aus einem C ++ - Hintergrund und habe …
Warum ist Collection.remove (Object o) nicht generisch? Scheint wie Collection<E>könnte habenboolean remove(E o); Wenn Sie dann versehentlich versuchen, (zum Beispiel) Set<String>anstelle jeder einzelnen Zeichenfolge aus a zu entfernen Collection<String>, handelt es sich um einen Fehler bei der Kompilierung anstelle eines späteren Debugging-Problems.
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.