Veel wijzer geworden uit mijn vorige thread. Helaas loop ik nu al 2 dagen tegen een probleem aan waarvan ik niet snap waarom en hoe dit komt. Ik kan een methode runnen vanuit de constructor maar als ik diezelfde methode aanroep vanuit een andere methode in die zelfde klasse als die consturctor krijg ik een NPE.
Klasse die de pointers aanmaakt
Klasse met constructor en methode die wel werkt
In de klasse Wallet staat ook de volgende methode
Als deze wordt aangeroepen krijg ik standaard een NPE.
De code die wordt uitgevoerd in de klasse Moves
Als ik deal.SetEnabled weg haal uit de methode dan draait het wel. Ik krijg dus alleen een NPE als ik een variabele uit een andere klasse probeer aan te roepen (en dan ook nog eens alleen als ik het buiten de constructor doe). Kan iemand mij verklaren waarom dit zo is?
Voor de volledigheid is alle code hier beschikbaar:
*snip* Het is hier niet de bedoeling 500+ regels code te dumpen en ons te laten debuggen
Klasse die de pointers aanmaakt
code:
1
2
3
4
5
6
| public class Main { public static void main(String[] args) { Moves moves = new Moves(); Table table = new Table(moves); Wallet wallet = new Wallet(moves); |
Klasse met constructor en methode die wel werkt
code:
1
2
3
4
5
6
7
8
| public class Wallet implements ActionListener { Moves m; Wallet(Moves moves) { m = moves; m.setDeal(Boolean.TRUE); //<-- methode wordt goed uitgevoerd. } |
In de klasse Wallet staat ook de volgende methode
Als deze wordt aangeroepen krijg ik standaard een NPE.
code:
1
2
3
| private void deal() { m.setDeal(Boolean.TRUE); } |
De code die wordt uitgevoerd in de klasse Moves
code:
1
2
3
4
5
| public void setDeal(Boolean b) { System.out.println("Ik doe wel wat"); deal.setEnabled(b); } |
Als ik deal.SetEnabled weg haal uit de methode dan draait het wel. Ik krijg dus alleen een NPE als ik een variabele uit een andere klasse probeer aan te roepen (en dan ook nog eens alleen als ik het buiten de constructor doe). Kan iemand mij verklaren waarom dit zo is?
Voor de volledigheid is alle code hier beschikbaar:
*snip* Het is hier niet de bedoeling 500+ regels code te dumpen en ons te laten debuggen

[ Voor 7% gewijzigd door RobIII op 26-09-2010 13:25 ]
Lux.Architectuur | Van Dromen tot Wonen | www.Lux-a.nl