Heim > Java > javaLernprogramm > Hauptteil

Kann ich in Java ein Array eines parametrisierten Typs erstellen?

Mary-Kate Olsen
Freigeben: 2024-10-30 02:17:28
Original
817 Leute haben es durchsucht

 Can I Create an Array of a Parameterized Type in Java?

Generische Arrays in Java: Ein umfassender Einblick

Java-Arrays und Generics scheinen auf den ersten Blick möglicherweise inkompatibel zu sein. Während Generika Typsicherheit und Flexibilität ermöglichen, sind Arrays in Java von Natur aus kovariant, was bedeutet, dass sie zur Laufzeit den genauen Typ ihrer Elemente beibehalten. Dies stellt eine Herausforderung dar, wenn Sie versuchen, Arrays generischer Typen zu erstellen.

Bedenken Sie den folgenden Codeausschnitt:

<code class="java">public class Hash<T extends Comparable<String>> {
    private T[] hashTable;
    // ...
}</code>
Nach dem Login kopieren

Dieser Code versucht, ein Array generischer Objekte zu erstellen, die Comparable erweitern. Allerdings erlaubt Java nicht die Umwandlung eines Objekt-Arrays in ein Array eines parametrisierten Typs, wie aus der Fehlermeldung hervorgeht, die während der Kompilierung erscheint:

java.lang.Object; cannot be cast to [Ljava.lang.Comparable;
Nach dem Login kopieren

Um dieses Problem zu umgehen, könnte man das Array verwenden. newInstance()-Methode:

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

Dieser Ansatz erstellt jedoch immer noch kein Array des parametrisierten Typs. Arrays in Java sind zur Laufzeit typsicher, sodass sie nicht nach Belieben in einen anderen Typ umgewandelt werden können.

Generika in Java unterliegen einer Typlöschung, bei der Typparameter während der Kompilierung entfernt werden. Dadurch wird sichergestellt, dass Arrays ihre spezifischen Elementtypen beibehalten, wodurch eine unbeabsichtigte Umwandlung verhindert wird. Daher ist es nicht möglich, ein Array eines bestimmten parametrisierten Typs zu erstellen.

In diesem speziellen Fall wird empfohlen, ArrayList anstelle von Arrays zu verwenden. ArrayLists bieten dynamische Größenanpassung, generische Unterstützung und sind für die meisten Szenarien besser geeignet.

Eine ausführliche Erklärung dieses Problems finden Sie in den häufig gestellten Fragen zu Java Generics: https://docs.oracle.com/javase/7 /docs/technotes/guides/generics/faq.html#CanIcreateanarraywhosecomponenttypeisaconcreteparameterizedtype

Das obige ist der detaillierte Inhalt vonKann ich in Java ein Array eines parametrisierten Typs erstellen?. 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!