Generika sind eine Form des parametrischen Polymorphismus, der in einer Reihe von Sprachen zu finden ist, darunter .NET-Sprachen, Java, Swift und Rust.
Ich habe gelegentlich gehört, dass Java mit Generika nicht richtig verstanden hat. (nächste Referenz hier ) Verzeihen Sie meine Unerfahrenheit, aber was hätte sie besser gemacht?
Nachdem Sie Folgendes nicht kompiliert haben: public class Gen<T> where T : System.Array { } mit dem Fehler Eine Einschränkung kann keine spezielle Klasse "System.Array" sein. Ich begann fragen, was genau ist eine „Sonderklasse“? Menschen scheinen oft die gleiche Art von Fehler zu bekommen, wenn sie System.Enumin einer generischen Einschränkung …
Was ist der richtige Weg, um einen VoidTyp zurückzugeben, wenn er kein Grundelement ist? Z.B. Ich benutze derzeit null wie unten. interface B<E>{ E method(); } class A implements B<Void>{ public Void method(){ // do something return null; } }
Lassen Sie mich ein Beispiel geben: Ich habe eine generische Klassen- / Schnittstellendefinition: interface IGenericCar< T > {...} Ich habe eine andere Klasse / Schnittstelle, die ich mit der obigen Klasse in Beziehung setzen möchte, zum Beispiel: interface IGarrage< TCar > : where TCar: IGenericCar< (**any type here**) > {...} …
Ich habe Netbeans so eingestellt, dass in meinem Java-Code ungeprüfte Warnungen angezeigt werden, aber ich verstehe den Fehler in den folgenden Zeilen nicht: private List<String> cocNumbers; private List<String> vatNumbers; private List<String> ibans; private List<String> banks; ... List<List<String>> combinations = Utils.createCombinations(cocNumbers, vatNumbers, ibans); Gibt: [unchecked] unchecked generic array creation for varargs …
Angenommen, ich habe eine generische Schnittstelle: interface MyComparable<T extends Comparable<T>> { public int compare(T obj1, T obj2); } Und eine Methode sort: public static <T extends Comparable<T>> void sort(List<T> list, MyComparable<T> comp) { // sort the list } Ich kann diese Methode aufrufen und einen Lambda-Ausdruck als Argument übergeben: List<String> …
Beim Lesen des offiziellen Java-Tutorials zu Generika habe ich festgestellt, dass Sie das Typargument (in diesem Fall T) einschränken können , um eine Klasse und / oder mehrere Schnittstellen mit dem Operator 'und' ( &) wie folgt zu erweitern : <T extends MyClass & Serializable> Ich ersetzte die &mit ,(durch …
Also habe ich diese Klasse: public class Foo<T> where T : ??? { private T item; public bool IsNull() { return item == null; } } Jetzt suche ich nach einer Typeinschränkung, mit der ich alles als Typparameter verwenden kann null. Das bedeutet alle Referenztypen sowie alle Nullable( T?) Typen: …
.NET bietet einen generischen Listencontainer, dessen Leistung nahezu identisch ist (siehe Frage Leistung von Arrays vs. Listen). Sie unterscheiden sich jedoch in der Initialisierung erheblich. Arrays lassen sich sehr einfach mit einem Standardwert initialisieren und haben per Definition bereits eine bestimmte Größe: string[] Ar = new string[10]; So kann man …
Ich habe einige Fragen zu generischen Platzhaltern in Java: Was ist der Unterschied zwischen List<? extends T>und List<? super T>? Was ist ein begrenzter Platzhalter und was ist ein unbegrenzter Platzhalter?
Ich möchte eine Funktion schreiben, die jedes Element in einem zurückgibt List, das nicht das erste oder das letzte Element ist (ein Durchkontaktpunkt). Die Funktion erhält eine generische List<*>Eingabe. Ein Ergebnis sollte nur zurückgegeben werden, wenn die Elemente der Liste vom Typ sind Waypoint: fun getViaPoints(list: List<*>): List<Waypoint>? { list.forEach …
Nachdem ich während meiner C ++ - Tage über die Übel des Cast-Operators im C-Stil unterrichtet worden war, stellte ich zunächst erfreut fest, dass Java 5 java.lang.Classeine castMethode erworben hatte. Ich dachte, dass wir endlich eine OO-Art haben, mit Casting umzugehen. Es stellt sich heraus, dass Class.castes nicht dasselbe ist …
Ich möchte die Jackson JSON-Bibliothek für eine generische Methode wie folgt verwenden: public MyRequest<T> tester() { TypeReference<MyWrapper<T>> typeRef = new TypeReference<MyWrapper<T>>(); MyWrapper<T> requestWrapper = (MyWrapper<T>) JsonConverter.fromJson(jsonRequest, typeRef); return requestWrapper.getRequest(); } ... public class MyWrapper<T> { private MyRequest<T> request; public MyRequest<T> getRequest() { return request; } public void setRequest(MyRequest<T> request) { …
Ich hatte gehofft, so etwas zu tun, aber es scheint in C # illegal zu sein: public Collection MethodThatFetchesSomething<T>() where T : SomeBaseClass { return T.StaticMethodOnSomeBaseClassThatReturnsCollection(); } Ich erhalte einen Fehler bei der Kompilierung: "'T' ist ein 'Typparameter', der im angegebenen Kontext nicht gültig ist." Wie kann ich bei einem …
Ich schreibe gerade Code für UnconstrainedMelody, der generische Methoden für Aufzählungen enthält. Jetzt habe ich eine statische Klasse mit einer Reihe von Methoden, die nur für "Flags" -Aufzählungen verwendet werden sollen. Ich kann dies nicht als Einschränkung hinzufügen ... daher ist es möglich, dass sie auch mit anderen Aufzählungstypen aufgerufen …
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.