Announcement

Collapse
No announcement yet.

Fehler beim casten von ArrayList auf Array

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fehler beim casten von ArrayList auf Array

    Hallo,

    ich habe folgendes Problem:
    Ich möchte beliebig viele Elemente (im Beispiel unten die Klasse Book) in einer Liste erfassen. Da die Anzahl in meinem Projekt vorher nicht bekannt ist, benötige ich eine dynamisch erweiterbare Liste, daher habe ich mich für ArrayList entschieden.
    An einer anderen Stelle im Programm benötige ich nun die Listenelemente allerdings als Array und da ja alle den gleichen Typ haben, dachte ich, die Elemente mit der Methode toArray() zu holen. Leider bekomme ich dabei eine ClassCastException, deren Ursache ich mir nicht wirklich erklären kann.

    Code:
    public class Test {
      private ArrayList<Book> al;
    
      public Test() {
        al = new ArrayList<Book>();
        al.add(new Book("Buch 1", "Autor 1"));
        al.add(new Book("Buch 2", "Autor 2"));
        al.add(new Book("Buch 3", "Autor 3"));
    
        System.out.println(al.size());
        Book[] array = (Book[])al.toArray();
        System.out.println(array.length);
      }
    
      public static void main(String[] args) {
        new Test();
      }
    
      private class Book {
        private String title;
        private String author;
    
        public Book(String title, String author) {
          this.title = title;
          this.author = author;
        }
      }
    }
    Wenn ich die Elemente stattdessen mit einer Zählschleife hole und "manuell" erfasse, funktioniert das einwandfrei:

    Code:
    Book[] array = new Book[al.size()];
    for (int i = 0; i < al.size(); i++) array[i] = al.get(i);
    Aber das kann ja eigentlich nicht der Sinn der Sache sein oder?

    Vielen Dank schonmal und viele Grüße

  • #2
    Book[] array = (Book[])al.toArray(new Book[al.size()]);

    http://openbook.galileodesign.de/jav...00038E1F0321E7
    Christian

    Comment

    Working...
    X