NullPointerException bei Übergabe an eine Methode

webix

Mitglied
Hallo,

ich habe ein Problem beim Aufruf einer Methode aus meiner Hauptklasse.

Hauptklasse:

import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Geburtstag extends Frame implements ActionListener
{

// Buttons, Textfelder werden hier definiert

AdressListe liste; //Das ist meine Unterklasse

public Geburtstag(AdressListe liste)
{
super ("Geburtstag");
this.setSize(600,480);
this.setLayout(null);
this.liste = liste;
}

public void auslesen(){

}

public static void main (String Args[])
{
AdressListe liste = new AdressListe();
liste.adresseAuslesen();
Geburtstag f = new Geburtstag(liste);
f.show();
}

}

Meine Unterklasse

import java.util.*;
import java.util.Vector.*;
import java.io.*;


public class AdressListe extends Vector
{

Geburtstag geb;

public void adresseEintragen(Geburtstage temp)
{
this.add(temp); //Liste wird hinzugefügt
}

public void adresseAuslesen (){

geb.auslesen(); //Aufruf der Methode aus der Hauptklasse

}

Folgende NullPointerExcpetion wird beim Kompilieren ausgegeben:

Exception in thread "main" java.lang.NullPointerException
at AdressListe.adresseAuslesen<geb.auslesen();>// In der Methode adresseAuslesen
at Geburtstag.main<liste.adresseAuslesen();> //Unten in der MainMethode der Hauptklasse
 
Zuletzt bearbeitet:
Original geschrieben von webix
Hallo,

ich habe ein Problem beim Aufruf einer Methode aus meiner Hauptklasse.

Hauptklasse:

import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Geburtstag extends Frame implements ActionListener
{

// Buttons, Textfelder werden hier definiert

AdressListe liste; //Das ist meine Unterklasse

public Geburtstag(AdressListe liste)
{
super ("Geburtstag");
this.setSize(600,480);
this.setLayout(null);
this.liste = liste;
}

public void auslesen(){

}

public static void main (String Args[])
{
AdressListe liste = new AdressListe();
liste.adresseAuslesen();
Geburtstag f = new Geburtstag(liste);
f.show();
}

}

Meine Unterklasse

import java.util.*;
import java.util.Vector.*;
import java.io.*;


public class AdressListe extends Vector
{

Geburtstag geb;

public void adresseEintragen(Geburtstage temp)
{
this.add(temp); //Liste wird hinzugefügt
}

public void adresseAuslesen (){

geb.auslesen(); //Aufruf der Methode aus der Hauptklasse

}

So lange Du nirgends adresseEintragen(...) aufrufst, bleibt die Variable geb natürlich immer NULL und geb.auslesen(); wirft logischerweise eine NullPointerException.
 
Hallo

liste.adresseEintragen wird bei mir aufgerufen, wenn ich ein Button drücke, ich habs hier aber nicht reingesetzt, da ich denke, dass es nicht daran liegt, da adresseEintragen eine eigene Methode ist.

Folgende NullPointerExcpetion wird beim Kompilieren ausgegeben:

Exception in thread "main" java.lang.NullPointerException
at AdressListe.adresseAuslesen<geb.auslesen();>// In der Methode adresseAuslesen
at Geburtstag.main<liste.adresseAuslesen();> //Unten in der MainMethode der Hauptklasse
 
Re: Hallo

Original geschrieben von webix
liste.adresseEintragen wird bei mir aufgerufen, wenn ich ein Button drücke, ich habs hier aber nicht reingesetzt, da ich denke, dass es nicht daran liegt, da adresseEintragen eine eigene Methode ist.

So lange Du aber den Button nicht drückst, bleibt geb = NULL.

Folgende NullPointerExcpetion wird beim Kompilieren ausgegeben:

Exception in thread "main" java.lang.NullPointerException
at AdressListe.adresseAuslesen<geb.auslesen();>// In der Methode adresseAuslesen
at Geburtstag.main<liste.adresseAuslesen();> //Unten in der MainMethode der Hauptklasse

Diese Fehlermeldung würde ich immer noch so interpretieren, dass geb.auslesen() den NP wirft, ergo geb = NULL ist. Was mich erneut zu der bereits o.a. Vermutung führt.
 
Du meinst, weil in adresseAuslesen aus der Klasse AdressListe keine Daten in der Methode vorhanden sind?

Es sind abwer welche vorhanden, ich kann ja auch manuel eine Variable erzeugen und übergeben lassen. Oder reden wir einander vorbei?
 
Original geschrieben von webix
Du meinst, weil in adresseAuslesen aus der Klasse AdressListe keine Daten in der Methode vorhanden sind?

Es sind abwer welche vorhanden, ich kann ja auch manuel eine Variable erzeugen und übergeben lassen. Oder reden wir einander vorbei?

OK, also noch mal:
Code:
public class AdressListe extends Vector
{

Geburtstag geb;

public void adresseEintragen(Geburtstage temp)
{
this.add(temp); //Liste wird hinzugefügt
}

public void adresseAuslesen (){

geb.auslesen(); //Aufruf der Methode aus der Hauptklasse

}

Das hier

Geburtstag geb;

bedeutet zunächst einmal, dass geb = NULL ist.
Im weiteren Programmablauf rufst Du

adresseAuslesen()

auf. In dieser Methode adresseAuslesen() wird jedoch

geb.auslesen();

aufgerufen. Und zwar, OHNE dass geb in der Zwischenzeit eine Zuweisung erfahren hat. geb ist also immer noch NULL. Und ein Aufruf auf NULL, nämlich geb.auslesen(), verursacht dann die Exception.
 
Snape hat vollkommen recht.

Falls du es ihm nicht glaubst das die Daten null sind, dann geh vollgenden Weg um zu erfahren, wie jeder Programmierer permanent erfährt, das der Computer immer recht hat:

Code:
if(geb!=null) {
geb.auslesen(); //Aufruf der Methode aus der Hauptklasse
} else {
 System.out.println("Der Computer hat immer recht!");
}

;)
 
Hallo Christian, die geb ist null, jedoch ist die Frage, wie instanziere ich die so, das geb nicht null ist und die übergabe klappt.

Geburtstag geb= new Geburtstag();

klappt nicht.
 
Original geschrieben von webix
Hallo Christian, die geb ist null, jedoch ist die Frage, wie instanziere ich die so, das geb nicht null ist und die übergabe klappt.

Geburtstag geb= new Geburtstag();

klappt nicht.

Siehe PM. Einfach dafür sorgen, dass der fehlende Konstruktor noch implementiert wird.
 
wie schon in pm geschrieben:

public Geburtstag(AdressListe liste)
{
super ("Geburtstag");
this.setSize(600,480);
this.setLayout(null);
this.liste = liste;
}


ist schon vorhanden und bekommt AdressListe übergeben.
 
Zurück