Generika sind eine Form des parametrischen Polymorphismus, der in einer Reihe von Sprachen zu finden ist, darunter .NET-Sprachen, Java, Swift und Rust.
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(); …
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 …
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 …
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) …
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 = …
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 …
Ich habe gerade über generische Programmierung, die List<E>Schnittstelle und studiert ArrayList, damit ich die folgende Aussage verstehen kann. ArrayList<String> list = new ArrayList<String>(); Aber ich verstehe die nächste Aussage, die ich beim Surfen im Internet gesehen habe, nicht. List<String> list2 = Collections.<String>emptyList(); Was ist Collections? Warum ist es nicht Collections<E>oder …
Ich versuche eine abstrakte Klasse zu definieren, die Comparable implementiert. Wenn ich die Klasse mit folgender Definition definiere: public abstract class MyClass implements Comparable <MyClass> 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, …
Die akzeptierte Antwort auf diese Frage beschreibt, wie eine Instanz von Tin der Generic<T>Klasse erstellt wird. Dies beinhaltet die Übergabe eines Class<T>Parameters an den GenericKonstruktor und das Aufrufen der newInstanceMethode von diesem. Generic<Bar>Anschließend wird eine neue Instanz von erstellt und der Parameter Bar.classübergeben. Was tun Sie, wenn der generische Typparameter …
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 <X> X get(String property) …
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<T> { final Class<T> clazz; Builder(Class<T> clazz) { this.clazz = clazz; …
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<T> : Exception { public string MyProperty { get; } public MyException(T prop) : base(prop.ToString()) { MyProperty = prop?.ToString(); } …
Warum ist public <R, F extends Function<T, R>> Builder<T> withX(F getter, R returnValue) {...} dann strenger public <R> Builder<T> with(Function<T, R> 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 …
Ich beantwortete eine Frage und stieß auf ein Szenario, das ich nicht erklären kann. Betrachten Sie diesen Code: interface ConsumerOne<T> { void accept(T a); } interface CustomIterable<T> extends Iterable<T> { void forEach(ConsumerOne<? super T> c); //overload } class A { private static CustomIterable<A> iterable; private static List<A> aList; public static …
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.