Als «generics» getaggte Fragen

Generika sind eine Form des parametrischen Polymorphismus, der in einer Reihe von Sprachen zu finden ist, darunter .NET-Sprachen, Java, Swift und Rust.

1
Warum ist T in der Collections.max () - Signatur durch Object begrenzt?
java.util.CollectionsIch habe gerade die Implementierung der Java 7- Klasse durchlaufen und etwas gesehen, das ich nicht verstehe. maxWarum ist in der Funktionssignatur Tbegrenzt durch Object? public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) { Iterator<? extends T> i = coll.iterator(); T candidate = i.next(); …
73 java  generics 

4
Was sind Reified Generics? Wie lösen sie Typlöschprobleme und warum können sie nicht ohne größere Änderungen hinzugefügt werden?
Ich habe Neal Gafters Blog zu diesem Thema gelesen und bin in einigen Punkten immer noch unklar. Warum ist es angesichts des aktuellen Status von Java, der JVM und der vorhandenen Sammlungs-API nicht möglich, Implementierungen der Sammlungs-API zu erstellen, bei denen Typinformationen erhalten bleiben? Könnten diese nicht die vorhandenen Implementierungen …

6
Wie erstelle ich eine generische Erweiterungsmethode?
Ich möchte eine generische Erweiterungsmethode entwickeln, die die Zeichenfolge in alphabetischer Reihenfolge und dann in aufsteigender Reihenfolge in Längsrichtung anordnet. ich meine string[] names = { "Jon", "Marc", "Joel", "Thomas", "Copsey","Konrad","Andrew","Brian","Bill"}; var query = names.OrderBy(a => a.Length).ThenBy(a => a); Wie kann die generische Erweiterungsmethode entwickelt werden? Ich habe es versucht …
73 c#  generics 

1
Generische Scala-Methode - Für T ist kein ClassTag verfügbar
Ich bin relativ neu in Scala und versuche, eine generische Objektmethode zu definieren. Wenn ich mich jedoch auf den parametrisierten Typ innerhalb der Methode beziehe, erhalte ich "Kein ClassTag für T verfügbar". Hier ist ein erfundenes Beispiel, das das Problem veranschaulicht. scala> def foo[T](count: Int, value: T): Array[T] = Array.fill[T](count)(value) …

2
Wie, wann und wo werden generische Methoden konkretisiert?
Diese Frage hat mich gefragt, wo die konkrete Implementierung einer generischen Methode tatsächlich zustande kommt. Ich habe Google ausprobiert, finde aber nicht die richtige Suche. Wenn wir dieses einfache Beispiel nehmen: class Program { public static T GetDefault<T>() { return default(T); } static void Main(string[] args) { int i = …
72 c#  .net  generics 

9
XML Generische Liste serialisierbarer Objekte serialisieren
Kann ich eine generische Liste serialisierbarer Objekte serialisieren, ohne deren Typ angeben zu müssen? So etwas wie die Absicht hinter dem kaputten Code unten: List<ISerializable> serializableList = new List<ISerializable>(); XmlSerializer xmlSerializer = new XmlSerializer(serializableList.GetType()); serializableList.Add((ISerializable)PersonList); using (StreamWriter streamWriter = System.IO.File.CreateText(fileName)) { xmlSerializer.Serialize(streamWriter, serializableList); } Bearbeiten: Für diejenigen, die Details wissen …

5
Erläutern Sie die Syntax von Sammlungen. <String> emptyList ()
Ich habe gerade über generische Programmierung, die List&lt;E&gt;Schnittstelle und studiert ArrayList, damit ich die folgende Aussage verstehen kann. ArrayList&lt;String&gt; list = new ArrayList&lt;String&gt;(); Aber ich verstehe die nächste Aussage, die ich beim Surfen im Internet gesehen habe, nicht. List&lt;String&gt; list2 = Collections.&lt;String&gt;emptyList(); Was ist Collections? Warum ist es nicht Collections&lt;E&gt;oder …

7
Java Abstract Class Implementieren einer Schnittstelle mit Generics
Ich versuche eine abstrakte Klasse zu definieren, die Comparable implementiert. Wenn ich die Klasse mit folgender Definition definiere: public abstract class MyClass implements Comparable &lt;MyClass&gt; Unterklassen müssen implementiert werden compareTo(MyClass object). Stattdessen möchte ich, dass jede Unterklasse implementiert compareTo(SubClass object)wird und ein Objekt ihres eigenen Typs akzeptiert. Wenn ich versuche, …

3
Wie erhalte ich das Attribut `.class` von einem generischen Typparameter?
Die akzeptierte Antwort auf diese Frage beschreibt, wie eine Instanz von Tin der Generic&lt;T&gt;Klasse erstellt wird. Dies beinhaltet die Übergabe eines Class&lt;T&gt;Parameters an den GenericKonstruktor und das Aufrufen der newInstanceMethode von diesem. Generic&lt;Bar&gt;Anschließend wird eine neue Instanz von erstellt und der Parameter Bar.classübergeben. Was tun Sie, wenn der generische Typparameter …
70 java  generics 

6
Java Generics: Generischer Typ, der nur als Rückgabetyp definiert ist
Ich schaue mir einen GXT-Code für GWT an und bin auf diese Verwendung von Generika gestoßen, für die ich in den Java-Tutorials kein weiteres Beispiel finden kann. Der Klassenname lautet, com.extjs.gxt.ui.client.data.BaseModelDatawenn Sie den gesamten Code anzeigen möchten. Hier sind die wichtigen Teile: private RpcMap map; public &lt;X&gt; X get(String property) …
68 java  generics  java-5 

4
Warum wird der Lambda-Rückgabetyp zur Kompilierungszeit nicht überprüft?
Die verwendete Methodenreferenz hat den Rückgabetyp Integer. Im Stringfolgenden Beispiel ist jedoch eine Inkompatibilität zulässig. Wie kann die Methodendeklaration withkorrigiert werden, um den Methodenreferenztyp ohne manuelles Casting sicher zu machen? 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; …

4
Was ist der Unterschied zwischen <? erweitert Base> und <T erweitert Base>?
In diesem Beispiel: 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() Kompiliert nicht mit: Example.java:9: error: incompatible types: HashMap&lt;Integer,List&lt;Integer&gt;&gt; …

5
So fangen Sie alle Varianten einer generischen Ausnahme in C # ab
Ich möchte alle Varianten einer generischen Ausnahmeklasse abfangen und habe mich gefragt, ob es eine Möglichkeit gibt, dies ohne mehrere catch-Blöcke zu tun. Angenommen, ich habe eine Ausnahmeklasse: public class MyException&lt;T&gt; : Exception { public string MyProperty { get; } public MyException(T prop) : base(prop.ToString()) { MyProperty = prop?.ToString(); } …
22 c#  generics  exception 

1
Warum ist ein Typparameter stärker als ein Methodenparameter?
Warum ist public &lt;R, F extends Function&lt;T, R&gt;&gt; Builder&lt;T&gt; withX(F getter, R returnValue) {...} dann strenger public &lt;R&gt; Builder&lt;T&gt; with(Function&lt;T, R&gt; getter, R returnValue) {...} Dies ist eine Nachverfolgung von Warum wird der Lambda-Rückgabetyp beim Kompilieren nicht überprüft? . Ich fand mit der MethodewithX() wie .withX(MyInterface::getLength, "I am not a …

3
Auswahl der Methodensignatur für den Lambda-Ausdruck mit mehreren übereinstimmenden Zieltypen
Ich beantwortete eine Frage und stieß auf ein Szenario, das ich nicht erklären kann. Betrachten Sie diesen Code: 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 …
11 java  generics  lambda  javac  ecj 

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.