Toon posts:

[JAVA] NullPointerException tussen twee klassen

Pagina: 1
Acties:
  • 138 views sinds 30-01-2008

Verwijderd

Topicstarter
Hoi,

Vandaag ben ik op volgend probleem gestoten. Ik moet van een klasse een String[] doorgeven naar een andere klasse. Deze laatste gebruikt deze array voor een ComboBox op te vullen.

Echter lukt het me niet om dit te doen, ik krijg immers steeds een NullPointerException.

De betreffende code uit eerste klasse TekenCanvas:
Java:
1
2
3
4
    public String[] naamTekenObjecten(){
        String[] naamTekenObjecten = { "Bird", "Cat", "Dog", "Rabbit", "Pig" };
        return naamTekenObjecten;
    }


De betreffende code uit tweede klasse SolarControl:
Java:
1
2
3
4
5
6
7
    public void tekenen() {
        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(getTekenCanvas().naamTekenObjecten()));
    }

    public static TekenCanvas getTekenCanvas() {
        return tekenCanvas;
    }


Vanaf het moment dat ik het programma wil uitvoeren geeft hij dus een NullPointException vanaf het moment dat tekenen() wordt aangeroepen.

Iemand die hier raad mee weet?
Mvg,
Geert

[ Voor 17% gewijzigd door Verwijderd op 15-03-2006 22:49 ]


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
kun je de stacktrace een posten?

Verwijderd

heb je er al aangedacht dat tekenCanvas misschien nog wel gewoon null is wanneer de functie getTekenCanvas word aangeroepen??

iets simpels om het te checken
Java:
1
2
3
4
public static TekenCanvas getTekenCanvas() {
        if(tekenCanvas == null) { System.out.println("ja is nog steeds null"); }
        return tekenCanvas;
    }

[ Voor 3% gewijzigd door Verwijderd op 15-03-2006 22:57 ]


  • Standeman
  • Registratie: November 2000
  • Laatst online: 09:25

Standeman

Prutser 1e klasse

Ik denk dat het object TekenCanvas niet geinitialiseerd (null) is.. iets anders kan het volgens mij niet zijn...

spuit 11 :/


Overigens is het raar dat je werkwoorden (TekenCanvas) in je objectnamen gebruikt... Werkwoorden duiden namelijk gedrag aan welke onderdeel zijn van je objecten. (of is TekenCanvas tegenwoordig een nieuw zelfstandig naamwoord). Dit allemaal om wat duidelijker te zijn in je code (kan later goed van pas komen!)

[ Voor 4% gewijzigd door Standeman op 15-03-2006 22:58 ]

The ships hung in the sky in much the same way that bricks don’t.


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
jComboBox1 kan ook nog null zijn. Misschien moet je alle vars die je probeert te gebruiken eens op null controleren. Lijkt erop alsof je ergens eea niet goed initialiseert.

Verwijderd

Topicstarter
Verwijderd schreef op woensdag 15 maart 2006 @ 22:57:
heb je er al aangedacht dat tekenCanvas misschien nog wel gewoon null is wanneer de functie getTekenCanvas word aangeroepen??

iets simpels om het te checken
Java:
1
2
3
4
public static TekenCanvas getTekenCanvas() {
        if(tekenCanvas == null) { System.out.println("ja is nog steeds null"); }
        return tekenCanvas;
    }
Goh, dat is het inderdaad, dat menutje komt eerst, daarna pas canvas. Ik zit vandaag er al veel te lang op te staren vrees ik en begin steeds meer van die domme fouten te maken.
Het lukt nu inderdaad als ik eerst canvas initialiseer, en daarna pas de combobox. Geheel logisch ook.

De benaming TekenCanvas duidt op een Canvas waarin je kan tekenen, vandaar de naam. Ik weet dat de naamgeving hier niet echt schitterend is, maar dit deel was al beschikbaar, te weinig tijd om al deze namen nog te gaan wijzigen.

Bedankt voor jullie hulp

[ Voor 7% gewijzigd door Verwijderd op 15-03-2006 23:09 ]


  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Verwijderd schreef op woensdag 15 maart 2006 @ 23:05:
[...]


Goh, dat is het inderdaad, dat menutje komt eerst, daarna pas canvas. Ik zit vandaag er al veel te lang op te staren vrees ik en begin steeds meer van die domme fouten te maken.
Het lukt nu inderdaad als ik eerst canvas initialiseer, en daarna pas de combobox. Geheel logisch ook.

De benaming TekenCanvas duidt op een Canvas waarin je kan tekenen, vandaar de naam. Ik weet dat de naamgeving hier niet echt schitterend is, maar dit deel was al beschikbaar, te weinig tijd om al deze namen nog te gaan wijzigen.

Bedankt voor jullie hulp
Domme fouten bestaan niet ;), domme mensen wel :+ © Eric Cartman van Southpark ;)

Nee even zonder ongein, het belang van goede naamgeving moet je niet onderschatten. Vaak blijkt uit de semantiek dan al wat het is/doet en nodig voor is. Als je een canvas wil hebben waar je op kunt tekenen is de naam TekenbareCavans geschikter, daar het een Canvas (zelfst.n.w) is die tekenbaar (b.n.).
Hernoemen is geen overbodige luxe in dit geval, en een beetje IDE (integrated development environment) biedt faciliteiten om binnen no time de naamgeving en alle relaties zoals waar deze naam gebruikt is, te veranderen; i.e. refactoren.
Succes met je java avontuur :)

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 09:22

Gonadan

Admin Beeld & Geluid, Harde Waren
offtopic:
:+

[ Voor 87% gewijzigd door Gonadan op 16-03-2006 08:09 . Reden: ikke niete slim soms ]

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:31
Dit is gewoon debug-werk. Met je IDE kan je een breakpoint zetten vanaf waar je de code stap voor stap kunt uitvoeren; ga dan na op welke regel die exceptie precies gegeven wordt, en bekijk welke variable NULL is. Een null-ref exception wil nl. zeggen dat je een stuk niet geinitialiseerd geheugen wilt lezen of schrijven.
Door te staren naar je code zal je de fout niet vinden, en het dus ook niet kunnen oplossen. Een programmeur moet in staat zijn om te debuggen.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.