Zuhause Persönliche Finanzen Programmierung von Java: Alles über Generics - Dummies

Programmierung von Java: Alles über Generics - Dummies

Video: Java für Fortgeschrittene - Multithreading 1 - Erstellen von Threads [GERMAN/DEUTSCH] 2024

Video: Java für Fortgeschrittene - Multithreading 1 - Erstellen von Threads [GERMAN/DEUTSCH] 2024
Anonim

Eines der ursprünglichen Designziele für Java war es, die Sprache so einfach wie möglich zu halten. Der Entwickler der Sprache hat einige unnötig komplizierte Funktionen von C ++ übernommen und sie aus dem Fenster geworfen. Das Ergebnis war eine Sprache, die elegant und schlank war. Einige Leute sagten, die Sprache sei zu schlank.

Nach einigen Jahren der Diskussion und des Zankens wurde Java ein bisschen komplizierter. Im Jahr 2004 hatte Java Enum-Typen, erweitert für Loops, statischen Import und einige andere interessante neue Features. Das am meisten diskutierte neue Feature war jedoch die Einführung von Generika.

ArrayList Personen = neue ArrayList ();

Die Verwendung von etwas Ähnlichem war in Java 5 neu. 0. In altem Java schreiben Sie

ArrayList people = new ArrayList ();

In diesen Tagen konnte eine ArrayList fast alles speichern, was man hineinstellen wollte - eine Nummer, einen Account, einen Raum, einen String … irgendetwas. Die ArrayList-Klasse war sehr vielseitig, aber mit dieser Vielseitigkeit kamen einige Kopfschmerzen. Wenn Sie etwas in eine ArrayList einfügen könnten, könnten Sie nicht leicht vorhersagen, was Sie von einer ArrayList erhalten würden.

Insbesondere könnten Sie nicht einfach Code schreiben, der davon ausgeht, dass Sie bestimmte Arten von Werten in der ArrayList gespeichert haben. Hier ein Beispiel:

ArrayList things = new ArrayList (); Dinge. add (neues Konto ()); Konto myAccount = Dinge. erhalte (0); // VERWENDEN SIE DIES NICHT. ES IST SCHLECHTER CODE.

In der dritten Zeile greift der Aufruf von get (0) auf den frühesten Wert in der Things-Sammlung zurück. Der Aufruf von get (0) ist in Ordnung, aber dann versagt der Compiler bei der versuchten Zuweisung zu myAccount. Sie erhalten eine Nachricht in der dritten Zeile, die besagt, dass alles, was Sie von der Liste der Dinge erhalten, nicht in die Variable myAccount eingefügt werden kann.

Sie erhalten diese Meldung, weil der Compiler beim Erreichen der dritten Zeile vergessen hat, dass das in der zweiten Zeile hinzugefügte Objekt vom Typ Konto ist!

Die Einführung von Generics behebt dieses Problem:

ArrayList things = new ArrayList (); Dinge. add (neues Konto ()); Konto myAccount = Dinge. erhalte (0); // VERWENDEN SIE DIESEN CODE INSTEAD. Es ist guter Code.

Das Hinzufügen an zwei Stellen teilt dem Compiler mit, dass Dinge Account-Instanzen speichern - sonst nichts. In der dritten Zeile des vorherigen Codes erhalten Sie also einen Wert aus der Things-Auflistung. Da Dinge nur Account-Objekte speichern, können Sie myAccount auf diesen neuen Wert verweisen lassen.

Java 5. 0 hat Java mit Generics ergänzt. Doch schon bald nach der Geburt von Java 5. 0 merkten Programmierer, wie plump der Code für Generics sein kann.Schließlich können Sie Generika innerhalb von Generika erstellen. Eine ArrayList kann eine Reihe von Arrays enthalten, von denen jedes eine ArrayList sein kann. Sie können also

ArrayList  schreiben. Mess = new ArrayList  ();

Die ganze Wiederholung in dieser Chaos-Erklärung gibt Programmierern Kopfschmerzen! Um diese Hässlichkeit zu vermeiden, haben Java 7 und spätere Versionen einen Diamant-Operator , . Der Diamantoperator teilt Java mit, dass er alles wahnsinnig komplizierte Material, das Sie in den vorherigen Teil der generischen Deklaration eingefügt haben, wiederverwenden kann.

In diesem Beispiel wird Java angewiesen, wiederzuverwenden, obwohl Sie nur einmal schreiben. Hier ist, wie die rationalisierte Java 7 Code aussieht:

Arraylist  Chaos = new Arraylist ();

In Java 7 und höher können Sie eine dieser Unordnungdeklarationen schreiben - die ursprüngliche, unangenehme Deklaration mit zwei Vorkommen von ArrayList [] oder die optimierte (nur leicht böse) Deklaration mit dem Diamantoperator und nur einer ArrayList [] Auftreten.

Ja, der optimierte Code ist immer noch kompliziert. Aber ohne die Wiederholung von ArrayList [] ist der optimierte Code weniger mühsam. Der Java 7-Diamant-Operator nimmt Ihnen eine Chance, etwas falsch zu kopieren und einen großen Fehler in Ihrem Code zu haben.

Programmierung von Java: Alles über Generics - Dummies

Die Wahl des Herausgebers

Bearbeiten in Photoshop Elements 10 Schnellfoto-Bearbeitungsmodus - Schnuller

Bearbeiten in Photoshop Elements 10 Schnellfoto-Bearbeitungsmodus - Schnuller

Schneller Foto-Bearbeitungsmodus ist eine abgespeckte Version des Modus "Full Photo Edit", der einfach grundlegende Fixingtools bereitstellt und mit einigen einzigartigen Funktionen aufwartet, z. B. eine Vorher-Nachher-Vorschau Ihres Bildes. Hier ist ein Schritt-für-Schritt-Workflow, den Sie im Schnellfoto-Bearbeitungsmodus verwenden können, um Ihre Fotos zu reparieren:

Zum Optimieren von Photoshop Elements-Bildern mit Fotoeffekten - Dummies

Zum Optimieren von Photoshop Elements-Bildern mit Fotoeffekten - Dummies

Fotoeffekte in Photoshop Elements 11 funktionieren wie Anwenden von Filtern; Das Dialogfeld "Filtergalerie" bietet Ihnen zahlreiche Optionen zum Anwenden eines Filters. Das geführte Bedienfeld bietet Ihnen Filtereffekte und führt Sie dann durch die Schritte zum Anpassen von Helligkeitswerte, Ändern von Farbton und Sättigung und Durchführen weiterer Anpassungen zum Vervollkommnen des Ergebnisses. Sie ...

Eingeben des Absatztyps in Photoshop Elements 11 - Dummies

Eingeben des Absatztyps in Photoshop Elements 11 - Dummies

Absatztyp in Photoshop Elements 11 ist ähnlich zu dem Text, den Sie in ein Textverarbeitungsprogramm eingeben, mit der Ausnahme, dass er in einem Textfeld oder einem Begrenzungsrahmen enthalten ist. Wenn Sie größere Textabschnitte haben, die Sie in ein Bild eingeben möchten, ist die Eingabe des Textes als Absatztyp die praktischste Option. Während ...

Die Wahl des Herausgebers

PHP-Anweisungen - Dummys

PHP-Anweisungen - Dummys

PHP ist eine Skriptsprache, die speziell für die Verwendung im Internet entwickelt wurde. Es enthält Funktionen, die Sie bei der Programmierung der Aufgaben unterstützen, die für die Entwicklung dynamischer Webanwendungen erforderlich sind. Diese Tabelle gibt einen kurzen Überblick über einige der Anweisungen, die Sie häufig verwenden werden: Anweisung Beschreibung array ("key" => "value", ...); Casts a ...

PHP-Schablonen-Systeme - Schablonen-Systeme

PHP-Schablonen-Systeme - Schablonen-Systeme

Können die Menge an Arbeit reduzieren, die Sie für die Erstellung einer Website in PHP benötigen. Wenn Sie eine Website erstellen, verwenden Sie häufig das gleiche Layout für die gesamte Website. Sie haben eine obere Portion, vielleicht mit einem Menü; ein Hauptinhaltsbereich; und ein unterer Teil, vielleicht mit Links oder ...

Make MySQL Datenbank Änderungen mit den ALTER Query - Dummies

Make MySQL Datenbank Änderungen mit den ALTER Query - Dummies

Die ALTER Query wird verwendet, um die Struktur von eine MySQL-Datenbank. In dieser Liste wird die Syntax für die Änderungen angezeigt, die Sie wahrscheinlich vornehmen möchten: ADD-Spaltenbezeichnung ALTER-Spaltenname SET-DEFAULT-Wert ALTER-Spaltenname DROP DEFAULT CHANGE-Spaltenname newcolname-Definition DROP-Spaltenname MODIFY-Spaltenname RENAME newtablename

Die Wahl des Herausgebers

Hochgeschwindigkeitsdatencaching mit NoSQL - Dummies

Hochgeschwindigkeitsdatencaching mit NoSQL - Dummies

Mit NoSQL haben Sie Hochgeschwindigkeits-Caching. Stellen Sie sich vor, Sie sind Bankangestellte und arbeiten mit drei anderen Kollegen zusammen. Jeder hat eine Reihe von Leuten, die bedient werden sollen. Einer der Kunden bleibt jedoch in der Schlange, um zu fragen, ob sein Scheck bereits eingelöst und der Betrag seinem Konto gutgeschrieben wurde. Wenn Sie ...

Wie man Einsichten aus Big Data kommuniziert - Dummies

Wie man Einsichten aus Big Data kommuniziert - Dummies

Big Data kann helfen, Einblicke zu gewinnen. Unternehmen gewinnen Wettbewerbsvorteile, wenn die richtigen Informationen zur richtigen Zeit an die richtigen Leute geliefert werden. Dies bedeutet, Erkenntnisse und Informationen aus Daten zu extrahieren und sie Entscheidungsträgern auf eine Weise zu vermitteln, die sie leicht verstehen. Schließlich sind Menschen weniger wahrscheinlich zu handeln, wenn sie ...

Zookeeper und HBase Reliability - dummies

Zookeeper und HBase Reliability - dummies

Zookeeper ist ein verteiltes Cluster von Servern, das gemeinsam zuverlässige Koordinations- und Synchronisationsdienste für Cluster-Anwendungen bereitstellt. .. Zugegeben, der Name "Zookeeper" mag auf den ersten Blick eine seltsame Wahl sein, aber wenn Sie verstehen, was es für einen HBase-Cluster tut, können Sie die Logik dahinter sehen. Beim Erstellen und Debuggen von verteilten Anwendungen ...