Ein " Haufen Pollution " , wie in Nicht-Reifiable Typen (Die Java ™ Tutorials> die Java - Sprache> Generics Learning (Aktualisiert)) Warum heißt es so?
Meta-Technik, mit der die Einstellung des zuverlässigen Typs auf die Laufzeit verschoben werden kann.
Ein " Haufen Pollution " , wie in Nicht-Reifiable Typen (Die Java ™ Tutorials> die Java - Sprache> Generics Learning (Aktualisiert)) Warum heißt es so?
Ich habe auf dieser Site mehrere Posts gesehen, die Javas Implementierung von Generika verurteilen. Jetzt kann ich ehrlich sagen, dass ich keine Probleme damit hatte, sie zu benutzen. Ich habe jedoch nicht versucht, selbst eine generische Klasse zu erstellen. Was sind Ihre Probleme mit Javas...
In letzter Zeit habe ich es mir zur Gewohnheit gemacht, Java-Sammlungen mit menschlichen Klassennamen zu "maskieren". Einige einfache Beispiele: // Facade class that makes code more readable and understandable. public class WidgetCache extends Map<String, Widget> { } Oder: // If you saw a...
Beim Überprüfen von Code habe ich festgestellt, dass die Möglichkeit besteht, ihn auf die Verwendung von Generika umzustellen. Der (verschleierte) Code sieht folgendermaßen aus: public void DoAllTheThings(Type typeOfTarget, object[] possibleTargets) { var someProperty =
Zum Beispiel habe ich ein Spiel, das einige Werkzeuge hat, um die Fähigkeit des Spielers zu erhöhen: Tool.h class Tool{ public: std::string name; }; Und einige Tools: Schwert.h class Sword : public Tool{ public: Sword(){ this->name="Sword"; } int attack; }; Shield.h class Shield :...
Es ist allgemein anerkannt, dass Java-Generika auf einige wichtige Arten versagt haben. Die Kombination von Platzhaltern und Schranken führte zu ernsthaft unlesbarem Code. Wenn ich mir jedoch andere Sprachen anschaue, kann ich anscheinend kein generisches Typsystem finden, mit dem Programmierer...
Nehmen wir an, ich habe zwei Klassen, die so aussehen (der erste Codeblock und das allgemeine Problem beziehen sich auf C #): class A { public int IntProperty { get; set; } } class B { public int IntProperty { get; set; } } Diese Klassen können in keiner Weise geändert werden (sie sind Teil...
Ich kann mich nicht erinnern, wann ich das letzte Mal einen Sammelkurs geschrieben habe. Jedes Mal, wenn ich denke, ich brauche es, nachdem ich nachgedacht habe, komme ich zu dem Schluss, dass ich es nicht tue. Die zweite Antwort auf diese Frage veranlasste mich zur Klärung (da ich noch keinen...
Ich wohne in einer Umgebung, in der die Leute glauben: Java-Generika sind die Funktion, die ausschließlich für das Schreiben von Bibliotheken und nicht für die eigentliche Codierung verwendet wird. C ++ ist eine OO-Programmiersprache. templateist eine optionale und vermeidbare Funktion Diese...
AFAIK, meine Klasse extendsElternklassen und implementsSchnittstellen. Aber ich stoße auf eine Situation, die ich nicht nutzen kann implements SomeInterface. Es ist die Deklaration eines generischen Typs. Beispielsweise: public interface CallsForGrow {...} public class GrowingArrayList <T...
Ich habe offenbar ein Missverständnis über den Unterschied zwischen <Foo>und <? extends Foo>. Nach meinem Verständnis, wenn wir hatten ArrayList<Foo> foos = new ArrayList<>(); Dies zeigt an, dass Foodieser Array-Liste Objekte vom Typ hinzugefügt werden können. Da...
In C # -Generika können wir eine Einschränkung für einen Typparameter deklarieren T, um einen Standardkonstruktor zu haben, indem wir sagen where T : new(). Es sind jedoch keine anderen Arten von Einschränkungen wie diese gültig - new(string)zum Beispiel usw. Was ist der Grund aus Sicht des...
Angenommen, ich habe diese Klassenhierarchie ... public abstract class Animal { public abstract void eat(); public abstract void talk(); } class Dog extends Animal { @Override public void eat() { } @Override public void talk() { } } class Cat extends Animal { @Override public void...
Ich bin mir ziemlich sicher, dass jeder mit allgemeinen Methoden der Form vertraut ist: T DoSomething<T>(T item) Diese Funktion wird auch als parametrisch polymorph (PP) bezeichnet, insbesondere als PP mit Rang 1 . Nehmen wir an, diese Methode kann mit einem Funktionsobjekt der Form...
Dies ist die Frage aus Sicht der Compiler-Interna. Ich interessiere mich für Generika, nicht für Vorlagen (C ++), daher habe ich die Frage mit C # markiert. Nicht Java, da AFAIK die Generika in beiden Sprachen in Implementierungen unterscheiden. Wenn ich mir Sprachen ohne Generika anschaue, ist...
Aus heutiger Sicht passt diese Frage nicht zu unserem Q & A-Format. Wir erwarten, dass die Antworten durch Fakten, Referenzen oder Fachwissen gestützt werden, aber diese Frage wird wahrscheinlich Debatten, Argumente, Abstimmungen oder erweiterte Diskussionen hervorrufen. Wenn Sie der Meinung...
Gemäß Regel 4 von Object Calisthenics von Jeff Bay (RTF) in The ThoughtWorks Anthology wird empfohlen, " erstklassige Sammlungen zu verwenden ". Regel 4: Erstklassige Sammlungen Die Anwendung dieser Regel ist einfach: Jede Klasse, die eine Sammlung enthält, sollte keine anderen...
In objektorientierten Sprachen, die generische Typparameter unterstützen (auch als Klassenvorlagen und parametrischer Polymorphismus bezeichnet), ist es häufig möglich, eine Typbeschränkung für den Typparameter anzugeben, sodass er abgeleitet wird von einem anderen Typ. Dies ist beispielsweise die...
In einer anderen StackExchange-Frage habe ich festgestellt, dass jemand diesen Prototyp verwendet: void DoSomething<T>(T arg) where T: SomeSpecificReferenceType { //Code.... } Wenn man bedenkt, dass es nur eine einzige Typbeschränkung gibt ( SomeSpecificReferenceType), was ist der...
In der Arbeit „Eine erweiterte vergleichende Studie zur Sprachunterstützung für generisches Programmieren“ von Garcia et al. Ein interessanter Vergleich der Programmiersprachenfunktionen für die generische Programmierung wird gegeben: mit der kurzen Erklärung der Terminologie: Kann jemand die...