Heim > Java > javaLernprogramm > Hauptteil

Können wir in Java generische Arrays erstellen, die vergleichbar sind?

Susan Sarandon
Freigeben: 2024-10-28 12:40:02
Original
604 Leute haben es durchsucht

 Can We Create Generic Arrays in Java That Extend Comparable?

Generische Arrays in Java: Erforschung von Kovarianz und Typlöschung

Einführung

Generische Arrays, bei denen die Array-Elemente ein gemeinsames haben Gemeinsame Typparameter stellen in Java aufgrund des Zusammenspiels zwischen Generika und dem kovarianten Verhalten von Arrays eine einzigartige Herausforderung dar.

Frage

Können wir ein Array von Generika erstellen, bei dem die generischer Typ erweitert Vergleichbar? Versuche, ein Objekt-Array in ein generisches Array umzuwandeln, das Comparable erweitert, stoßen auf Probleme und werfen die folgende Frage auf: Gibt es eine Problemumgehung?

Antwort

Generika und Arrays: Ein Kompatibilitätsrätsel

Generika und Arrays haben grundsätzlich unterschiedliche Arten, mit Typen umzugehen:

  • Arrays: Kovariant, was bedeutet, dass ihre Elementtypen ihre eigenen behalten Typinformationen zur Laufzeit.
  • Generika: Typlöschung verwenden, wobei Typinformationen zur Laufzeit entfernt werden.

Aufgrund dieser Nichtübereinstimmung wird ein Array von Generika erstellt Typen, die eine bestimmte Klasse erweitern, sind nicht möglich.

Array.newInstance(): Eine Problemumgehung

Eine mögliche Lösung ist die Verwendung der Methode Array.newInstance():

<code class="java">private Comparable[] hashtable;

...

hashtable = (Comparable[])Array.newInstance(Comparable.class, tableSize);</code>
Nach dem Login kopieren

Mit diesem Ansatz können Sie ein Array des Supertyps des generischen Typs erstellen (in diesem Fall vergleichbar), aber es ist wichtig zu beachten, dass dieses Array nicht vom gewünschten generischen Typ ist.

Warum nicht Arrays mit Generika verwenden?

Obwohl es Problemumgehungen gibt, wird von der Verwendung von Arrays mit Generika im Allgemeinen aus folgenden Gründen abgeraten:

  • Bedenken hinsichtlich der Typsicherheit : Das Umwandeln eines Objekt-Arrays in ein generisches Array kann zu Problemen mit der Typsicherheit führen, da Arrays kovariant sind und Generika Typlöschung verwenden.
  • Portabilität und Wartbarkeit: Verschiedene Java Virtual Machines (JVMs). ) handhabt das Löschen von Typen möglicherweise anders, wodurch das Verhalten weniger portierbar und schwieriger zu warten ist.

Alternative: ArrayList

Eine geeignetere Option ist die Verwendung von ArrayList , das eine effiziente und typsichere Möglichkeit zum Verwalten von Sammlungen generischer Objekte bietet. ArrayLists bieten die Flexibilität von Generika und vermeiden die potenziellen Fallstricke, die mit Arrays und Generika verbunden sind.

Das obige ist der detaillierte Inhalt vonKönnen wir in Java generische Arrays erstellen, die vergleichbar sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!