Vererbung NullPointerException

Butterbrot

Aktives Mitglied
Guten Tag Community,

ich versuche mit dieser Klasse eine Verwaltung von sozialen Netzwerken zu bilden.
"AuDList" ist eine generische Klasse, die einwandfrei funktioniert und deren Methoden ich in diese Klasse einbinde. "Account" ist eine größere .jar Datei, die accounts wie in einem Sozialen Netzwerk (Also Name, Alter und in welchen Netzwerk man sich befindet) speichert und ebenfalls einwandfrei funktioniert. Nun versuche ich mit der "AccountCollection" eine Schnittstelle zwischen der beiden zu bilden. Doch sobald ich diese Klasse ausführe erhalte ich einen NullPointer in der "add" Methode und ich weiß nicht woran das liegt. Wäre über jeden Tipp oder Vorschlag dankbar. Danke im Voraus.

P.S.: Um folgende Klasse handelt es sich:

Java:
public class AccountCollection {

    private AuDList<Account> accounts;

    public AccountCollection(){
        AuDList<Account> accounts = new AuDList<Account>();
    }

    public boolean exsists(Account account){
        if(exsists(account)){
            return true;
        }
        else{
            return false;
        }
    }

    public void add(Account account){
        this.accounts.add(account);
    }

    public void remove(Account account){
        this.accounts.remove(account);
    }

    public Account[] getAccounts(){
        Account[] array = new Account[accounts.size()];

        for (Account account : array) {
            int i = 0;
            array[i] = account;
            i++;
        }

        return array;
    }

    public static void main(String[] args) {

        AccountCollection account = new AccountCollection();

        SocialNetwork gesichterbuch = new SocialNetwork("Gesichterbuch");
        Account a = new Account(gesichterbuch, "Herbert Groenemeyer", 56);
        Account b = new Account(gesichterbuch, "Tom Jerry", 27);
        Account c = new Account(gesichterbuch, "AuD Student", 13);

        //        account.add(a);
        //        account.add(b);
        //        account.add(c);
        System.out.println(account.exsists(a));

        ChildrenAccount d = new ChildrenAccount(gesichterbuch, "Kind Eins", 15, a);
        a.addContact(b);
        a.addContact(c);
        TargetGroup tg = new TargetGroup(gesichterbuch);
        tg.addByAgeBetween(14, 55);
        System.out.println(tg);
        System.out.println();
        System.out.println();
        System.out.println(gesichterbuch);

        Account accout = new Account(gesichterbuch, "hiughG", 23);
        for (int i = 0; i < 13; i++) {
            accout.addContact(new Account(gesichterbuch, "hiughG", 23));


        }
    }
}
 

Tarrew

Top Contributor
Java:
   public AccountCollection(){
        AuDList<Account> accounts =new AuDList<Account>();
   }

Du erstellst dir im Konstruktor eine neue AuDList, die auch nur im Konstruktor gültig ist.
Du musst deinem bestehendem Attribut aber eine Liste zuweisen.
 

Butterbrot

Aktives Mitglied
Und wie weiße ich ihm eine Liste zu? Wenn ich das gleiche außerhalb des Konstruktors mache, erhalte ich einen StackOverFlow. Danke im Voraus.
 

Butterbrot

Aktives Mitglied
Ja, das habe ich vorhin gemerkt und deswegen umgeändert und das "NoSuchMethodError" hat sich aufgehoben. Habe nun "AccountCollection@1b84c92" als Antwort, obwohl meine toString-Methode, in der generischen Klasse das tut was es sollte.
 

Harry Kane

Top Contributor

Butterbrot

Aktives Mitglied
Okay, ich entschuldige mich für meine voreiligen Posts ^^. Das kryptische funktioniert auch nicht, weil ich eine toString() angewendet habe. Ich müsste die Methode "getAccounts" anwenden (die ich noch verbessern muss, weil sie nicht das ausgibt was sie sollte)
 

JStein52

Top Contributor
Im Moment ist ein bisschen unklar über welchen Code du redest und was du inzwischen alles geändert hast. Vielleicht kannst du nach der nächsten Änderung mal wieder den aktuellen Code posten und deine Fragen darauf beziehen.
 

Butterbrot

Aktives Mitglied
Java:
public Account[] getAccounts(){
        Account[] array = new Account[accounts.size()];

        for (Account account : array) {
            int i = 0;
            array[i] = account;
            i++;
        }

        return array;
    }

Ich rede über diese Methode, die ich anwenden hätte sollen und die ich noch verbessern muss um meine angelegten Accounts wiederzugeben. Viel geändert habe ich nicht.
 

JStein52

Top Contributor
Und wo hättest du die anwenden sollen/wollen ? die gibt die Liste der accounts zurück und tut ja eigentlich was man erwarten würde ??!! Naja, d.h. sie tut nicht wirklich was, du iterierst da über ein gerade zuvor angelegtes array das noch nichts enthält.
 

Butterbrot

Aktives Mitglied
"Harry Kane" hat gefragt, worauf "AccountCollection@1b84c92" ist und das ist nämlich die Antwort auf den Aufruf von "System.out.println(accounts.toString())". Das funktioniert auch nicht, weil das eine Methode der generischen Klasse ist und ungeeignet ist, um meine accounts wiederzugeben. Um meine accounts wiederzugeben müsste ich die Methode "System.out.println(accounts.getAccounts())" verwenden. Diese Methode aber schmeißt mir wieder nur ein Verweis auf meine accounts ("[LAccount;@1b84c92") und zeigt mir nicht meine accounts. Ich entschuldige mich noch einmal an der Stelle für die ganze Verwirrung und meine voreiligen Posts.
 

JStein52

Top Contributor
Ich nehme an du willst deine Accounts ausgeben die in dieser Liste stehen oder:

Code:
private AuDList<Account> accounts;

Gibt es dort denn eine toString()-Methode ? Falls ja, warum machst du in deiner AccountCollection nicht eine vernünftige toString() statt mit der getAccounts herumzumachen ?
Und in deiner Main schreibst du dann:

Code:
 System.out.println(account);
 

Butterbrot

Aktives Mitglied
Ja, in der generischen Klasse existiert eine toString()-Methode und ja, ich möchte die Accounts ausgeben. Und ich muss das leider so machen. Wird mir vorgegeben
 

JStein52

Top Contributor
Aber die getAccounts ist nicht vorgegeben ?? Was soll die denn tun ? Die liefert ja bis jetzt ein Account[] zurück. Wie willst du die denn ändern ?
 

Butterbrot

Aktives Mitglied
Naja, "getAccounts()" soll "...ein Array zurückgeben, dass alle Accounts der Sammlung enthält. Dieses
Array soll so groß sein wie die Anzahl der Accounts". Wie ich das konkret machen soll, weiß ich nicht, der einzige Hinweis, der mir gegeben wird ist: "Sie können sich in dieser Teilaufgabe zunutze machen, dass Ihre Liste iterierbar ist"
 
Zuletzt bearbeitet:

JStein52

Top Contributor
Dann musst du die getAccountsw so lassen wie sie ist. Du musst nur ein einziges Wort verändern dann tut sie genau was sie soll. Aber wieso du keine toString() machen darfst verstehe ich immer noch nicht
 

Butterbrot

Aktives Mitglied
Welches Wort muss ich denn ändern? Ich habe jetzt einfach mal die toString() Methode der generischen Klasse hergenommen und es funktioniert alles :)
 
Zuletzt bearbeitet:

JStein52

Top Contributor
Machs mal so:
Code:
public Account[] getAccounts(){
        Account[] array = new Account[accounts.size()];

        for (Account account : accounts) {
            int i = 0;
            array[i] = account;
            i++;
        }

        return array;
    }

Iteriere nicht über dein leeres array sondern über die accounts !!
 

Butterbrot

Aktives Mitglied
Das ist natürlich noch besser. Mit meinem Ansatz, gibt er zwar ebenfalls alles accounts raus, jedoch wenn ich das mittlere lösche, erscheint das letzte nicht mehr. Mit deiner Vorgehensweise, ist dieses Dilemma behoben. Vielen herzlichen Dank, dass du dir die Zeit und Mühe genommen hast um mir zu helfen :)
 

coco07

Bekanntes Mitglied
Machs mal so:
Code:
public Account[] getAccounts(){
        Account[] array = new Account[accounts.size()];

        for (Account account : accounts) {
            int i = 0;
            array[i] = account;
            i++;
        }

        return array;
    }

Iteriere nicht über dein leeres array sondern über die accounts !!

Was ist denn das für ein Schwachsinn? So überschreibt er bei jedem Durchlauf der Schleife das erste Feld des Arrays mit der Referenz des jeweils nächsten Accounts...
 

Bitfehler

Bekanntes Mitglied
Weil in der Schleife die Variable i immer wieder der Wert 0 zugewiesen wird. So wird immer array[0] angesprochen. Danach wird zwar i erhöht, was aber verpufft, da i wieder auf 0 gesetzt wird.
So wird das Array array nur einen Eintrag haben, auch wenn in accounts mehrere sein sollten.
 

JStein52

Top Contributor
Ach das meint ihr :) Stimmt, das habe ich immer einfach so mitkopiert ohne darauf zu achten. Das gehört natürlich vor die Schleife
 

Butterbrot

Aktives Mitglied
Java:
    AccountCollection account = new AccountCollection();

        SocialNetwork gesichterbuch = new SocialNetwork("Gesichterbuch");
        Account a = new Account(gesichterbuch, "Herbert Groenemeyer", 56);
        Account b = new Account(gesichterbuch, "Tom Jerry", 27);
        Account c = new Account(gesichterbuch, "AuD Student", 13);
        account.add(a);
        account.add(b);
        account.add(c);
        account.getAccounts();
        account.remove(b);
        System.out.println(account.exsists(b));
        System.out.println(account.exsists(a));
        System.out.println(account.accounts.toString());

Ausgabe:
false
true
[Herbert Groenemeyer
Age: 56
Contacts: NO CONTACTS YET, AuD Student
Age: 13
Contacts: NO CONTACTS YET]

Das gleiche erscheint auch, wenn ich i in der for-Schleife initialisiere.
 

Bitfehler

Bekanntes Mitglied
Hallo,
die Änderung betrifft die Methode getAccounts().
Der von dir gepostete Code ruft die Methode zwar auf, da du aber nicht mit der Rückgabe weiterarbeitest, ist es egal, ob du sie aufrufst oder abänderst.
Aktuell tat sie keinen Nutzen.

Die Ausgabe erscheint mir korrekt. Oder was stört dich?
 

Butterbrot

Aktives Mitglied
Da hast du recht. Aber sobald ich versuche getAccounts() mit einem System.out.println() wiederzugeben erhalte ich nur den Verweis auf das Array. Und da die toString() Methode sich in der anderen Klasse aufhält, weiß ich leider nicht im geringsten, wie ich GLEICHZEITIG getAccounts() aufrufen kann UND das in einen String umwandle. ("System.out.println(account.getAccounts().accounts.toString()" sowas funktioniert natürlich nicht)
 

Bitfehler

Bekanntes Mitglied
Was willst du denn mit der Methode getAccounts() genau erreichen?
Die Benennung deutet für mich darauf hin, dass du alle Accounts haben möchtest. Die hast du ja aber schon in deiner AccountCollection account.

Wenn du den Inhalt der Collection ausgeben möchtest, könntest du beispielsweise mit einer Schleife über deine Collection gehen und dir jeden Account ausgeben lassen. Alternativ kannst du in AccountCollection eine Methode schreiben, beispielsweise toString(), und dort deine Einträge zu einem String zusammenfügen. Der Aufruf im zweiten Fall wäre dann System.out.println(account.toString()).

Ich glaube, ich habe das Problem aber nicht verstanden. Vielleicht hilft es dir dennoch.
 

Saheeda

Top Contributor
@Butterbrot
getAccounts liefert ein Array vom Typ Account zurück. Diese toString-Methode kannst du nicht überschreiben und wirst über getAccounts().toString() immer nur die Referenz bekommen, die toString eines Arrays ist in Java selbst definiert.
Damit du aber eine Auflistung aller Accounts bekommst, um sie auf der Konsole anzuzeigen, kannst du, wie von Bitfehler bereits geraten, die toString()-Methode der AccountCollection selbst überschreiben.
 

Butterbrot

Aktives Mitglied
Nun gut, ich habe jetzt eine toString() - Methode geschrieben, die eigentlich nicht verlangt war. So erhalte ich wenigstens, dass was ich wollte. Leider war das in der Aufgabestellung nicht verlangt und ich weiß auch nicht, wie meine Tutoren darauf reagieren werden bzw. das bepunkten werden. Dennoch spreche ich allen meinen Dank aus.
 

Butterbrot

Aktives Mitglied
Das ist jetzt nur ein Ausschnit. Davor steht noch:
14. Implementieren Sie nun die Funktionsweise der einzelnen Methoden:
a) Der Konstruktor soll die AuDList accounts mit einer neuen Liste initialisieren.
 

Anhänge

  • javatutorial.pdf
    24,4 KB · Aufrufe: 5

JStein52

Top Contributor
Da steht ja nun erstmal gar nichts von einer toString() ..... das brauchst du ja höchstens zum Testen.
Und das i=0; gehört natürlich vor die Schleife. Zum testen würde ja gehören dass du die getAccounts aufrufst und dir dann irgendwie (das ist doch dir überlassen) den Inhalt des zurückgelieferten Arrays anschaust.
 

Harry Kane

Top Contributor
AccountCollection account = new AccountCollection();
System.out.println(account.accounts.toString());
Das dürfte so gar nicht kompilieren, es sei denn, die accounts-Variable von AccountCollection ist nicht mehr private.
Um Arrays in einen lesbaren String umzuwandeln, gibt es die Methode Arrays.toString(Object[] anArray). Diese ruft für alle Objekte in dem Array deren toString() Methode auf, trennt die einzelnen Strings durch Kommata, und setzt an den Anfang und das Ende eine eckige Klammer.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
H Liste Knoten NullPointerException Java Basics - Anfänger-Themen 7
C Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 10
LePetitChat1 Arrays - NullPointerException? Java Basics - Anfänger-Themen 14
berserkerdq2 Nullpointerexception, obwohl ich Array initialisiere? Java Basics - Anfänger-Themen 1
U Warum gibt das eine Nullpointerexception? (Switch) Java Basics - Anfänger-Themen 6
missy72 Klassen Objekt Array NullPointerException Java Basics - Anfänger-Themen 3
Jose05 Nullpointerexception Java Basics - Anfänger-Themen 7
emx-zee Erste Schritte NullPointerException, Array mit zufälligen Zahlen füllen Java Basics - Anfänger-Themen 2
Jose05 Nullpointerexception bei Umwandlung von String zu int Java Basics - Anfänger-Themen 2
H Java NullPointerException Java Basics - Anfänger-Themen 4
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
L Threads Komischer NullPointerException Java Basics - Anfänger-Themen 2
H Fehler: NullPointerException und ich weiß net warum Java Basics - Anfänger-Themen 4
F Fehlermeldung java.lang.NullPointerException Java Basics - Anfänger-Themen 4
Avalon NullPointerException beim Mocken Java Basics - Anfänger-Themen 6
D NullPointerException in foreach loop Java Basics - Anfänger-Themen 1
D java.lang.NullPointerException Java Basics - Anfänger-Themen 19
T Bufferedwriter code Nullpointerexception Java Basics - Anfänger-Themen 4
D NullPointerException im Array Java Basics - Anfänger-Themen 4
X java.lang.NullPointerException fehler ? Java Basics - Anfänger-Themen 1
B java.lang.NullPointerException bei javafx Java Basics - Anfänger-Themen 10
J NullPointerException beim Klonnen eines Arayys und beim aufrufen einer Methode Java Basics - Anfänger-Themen 2
V NullPointerException Java Basics - Anfänger-Themen 2
S NullPointerException während ResultSet Java Basics - Anfänger-Themen 7
V NullPointerException, wenn Key und Value null sind Java Basics - Anfänger-Themen 2
scratchy1 NullPointerException Java Basics - Anfänger-Themen 19
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
F Wie kann ich diese NullPointerException umgehen?! Java Basics - Anfänger-Themen 41
dapzoo Compiler-Fehler Beim Werte verteilen in Objektarray NullPointerException Java Basics - Anfänger-Themen 4
W Optional<T> - NullPointerException Java Basics - Anfänger-Themen 37
Jascha NullPointerException vs NumberFormatException Java Basics - Anfänger-Themen 5
L Variablen NullPointerException bei Dateigröße (Nr.1) Java Basics - Anfänger-Themen 4
M Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 13
D NullPointerException umgehen Java Basics - Anfänger-Themen 17
Z Objekt Array führt zum NullPointerException Java Basics - Anfänger-Themen 2
W NullPointerException obwohl nicht null? Java Basics - Anfänger-Themen 3
W ArrayList NullPointerException Java Basics - Anfänger-Themen 4
A NullPointerException Java Basics - Anfänger-Themen 6
S NullPointerException Java Basics - Anfänger-Themen 4
T OOP Wörterbuch NullPointerException Java Basics - Anfänger-Themen 4
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
O NullPointerException Java Basics - Anfänger-Themen 2
M Interpreter-Fehler Feld NullPointerException Java Basics - Anfänger-Themen 4
L Variablen Unerklärliche NullPointerException Java Basics - Anfänger-Themen 2
E Compiler-Fehler nullPointerException in verschachteltem Modell Java Basics - Anfänger-Themen 6
DaCrazyJavaExpert Threads NullPointerException Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert Compiler-Fehler Variable nicht mit null initialisiert, trotzdem: NullPointerException Java Basics - Anfänger-Themen 28
kodela NullPointerException Java Basics - Anfänger-Themen 12
R Taschenrechner NullPointerException Java Basics - Anfänger-Themen 1
H java.lang.NullPointerException Java Basics - Anfänger-Themen 4
H NullPointerException obwohl Objekt angelegt wurde Java Basics - Anfänger-Themen 1
A Threads Reentrantlock | NullpointerException möglicher Deadlock? Java Basics - Anfänger-Themen 0
K Compiler-Fehler NullPointerException lösen Java Basics - Anfänger-Themen 16
G java.lang.NullPointerException Java Basics - Anfänger-Themen 3
P Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 1
E Compiler-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 2
S Methoden Methode funktioniert nicht | NullPointerException Java Basics - Anfänger-Themen 6
F NullpointerException bei zweidimensionalem Array Java Basics - Anfänger-Themen 2
Z OOP - Array ständig NullPointerException Java Basics - Anfänger-Themen 4
J Verstehe die NullPointerException nicht Java Basics - Anfänger-Themen 1
T Nullpointerexception und es wird nichts angezeigt Java Basics - Anfänger-Themen 15
H NullPointerException, aber wieso? Java Basics - Anfänger-Themen 5
B ProcessMessage NullPointerException Java Basics - Anfänger-Themen 11
shiroX Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 9
MrSnake ItemListener mit NullPointerException Java Basics - Anfänger-Themen 3
J java.lang.NullPointerException in meiner JavaFXControllerKlasse Java Basics - Anfänger-Themen 26
M NullPointerException Java Basics - Anfänger-Themen 8
D Communications link failure | java.lang.NullPointerException Java Basics - Anfänger-Themen 3
G NullPointerException Java Basics - Anfänger-Themen 1
J NullpointerException Java Basics - Anfänger-Themen 1
M Interpreter-Fehler Nullpointerexception trotz Ordentlicher Initialisierung Java Basics - Anfänger-Themen 4
F java.lang.NullPointerException, kann aber nicht sein! Java Basics - Anfänger-Themen 4
M String-Vergleich und NullPointerException Java Basics - Anfänger-Themen 4
D Java Fehler: NullPointerException Java Basics - Anfänger-Themen 1
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
X Problem mit NullPointerException Java Basics - Anfänger-Themen 2
K NullPointerException in der Hashtable Java Basics - Anfänger-Themen 4
S Interpreter-Fehler Hilfestellung bei einer NullPointerException Java Basics - Anfänger-Themen 1
S GraphNode --- Dijkstra Algorithmus : NullPointerException Java Basics - Anfänger-Themen 1
L NullPointerException Java Basics - Anfänger-Themen 11
M Nullpointerexception??? Java Basics - Anfänger-Themen 2
W NullPointerException bei DefaultListModel Java Basics - Anfänger-Themen 5
N NullPointerException bei Konsolenausgabe Java Basics - Anfänger-Themen 5
J Klasse in Klasse; NullPointerException Java Basics - Anfänger-Themen 8
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
Q NullPointerException Java Basics - Anfänger-Themen 5
H NullPointerException Java Basics - Anfänger-Themen 5
T Threads MultiThreading NullPointerException Java Basics - Anfänger-Themen 7
K NullPointerException wird geworfen, bitte um Hilfe! Java Basics - Anfänger-Themen 7
O Objekt weitergeben Meth Class NullPointerException Java Basics - Anfänger-Themen 2
J Char-Array - NullPointerException Java Basics - Anfänger-Themen 3
M Compiler-Fehler Java suckt - java.lang.NullPointerException Java Basics - Anfänger-Themen 12
S Array wird nicht übernommen NullPointerException Java Basics - Anfänger-Themen 6
S Datentypen List.toString wirft NullPointerException Java Basics - Anfänger-Themen 5
L Compiler-Fehler Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 2
H Compiler-Fehler NullPointerException bei .length, Konstruktor fehlerhaft? Java Basics - Anfänger-Themen 3
B JRadioButton wechsel gibt NullPointerException Java Basics - Anfänger-Themen 2
L NullPointerException lösen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben