[JAVA] Problem mit eigenen Objekten

  • Hallo,


    ich habe 2 Klassen - eine Bibliotheksklasse und eine Buchklasse. In der Bibliothek möchte ich die Bücher "speichern", jedoch scheiterts bei mir da vermutlich an absolut elementaren Dingen.


    Hier ist die Buchklasse:


    Und hier die Bibliotheksklasse:




    Da ich in der Bibliotheksklasse alle Bücher, die dort drin sind verwalten möchte, hatte ich natürlich die Idee diese in einem Array zusammenzufassen. Um dieses Array dann zu initialisieren, möchte ich es im Konstruktor mit Standardwerten füllen - allerdings mault da bereits der Compiler, wenn ich es aktiv ausführe.


    Fehlercode:

    Code
    Exception in thread "main" java.lang.NullPointerException
    	at Library.<init>(Library.java:14)


    Die entsprechende Zeile ist:

    Code
    books[i]=new Book("a","a","a",1,1);


    Dies ist mein Testcode aus einer Testklasse (zum Einfügen komme ich noch nichtmal, die untere Zeile ist der Crashpunkt)


    Code
    public static void main(String[] args) {
    		Library lib1=new Library(2,1);



    Meine Fragen sind nun:


    Wieso ist dort eine NullException, wenn ich dieses Objekt doch gerade erzeugen will?
    Wie kann ich das Problem beheben?
    Gibt es noch eine andere Möglichkeit um entsprechend "nicht vorhandene" Objekte zu suchen anstatt dem (später folgenden) Abfragen auf Standardwerte?



    Danke im Voraus und frohes Neues! ;)



    EDIT: Erledigt, books = new Book[cap]; im Konstruktor hat einfach gefehlt.

    Einmal editiert, zuletzt von BloodyEric ()

  • Beim deleten beachte bitte nicht mit ==, sondern mit der Methode equals zu überprüfen, außerdem sollte man standardmäßig den Parameter auf != null überprüfen, wenn es kein primitiver Datentyp ist.


    //edit:


    Im Sinne des O.g, solltest du die equals Methode überschreiben ;), sollte man grundsätzlich, wenn man eigene Klassen schreibt.

    Einmal editiert, zuletzt von 8D ()