[JAVA] NPE op list.add

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Xiliath
  • Registratie: Oktober 2003
  • Laatst online: 30-10-2022
Geen idee waar de nullpointerexception vandaan komt

code:
1
2
3
4
5
6
List<Festival> festivalLijst = null;
festival = new Festival("Pinkpop", 1);

if (festival != null) {
   festivalLijst.add(festival);
}


festivalLijst.add(festival); geeft dus de exception

Iemand enig idee? Ik zoek me wezenloos.

Acties:
  • 0 Henk 'm!

  • The Fox NL
  • Registratie: Oktober 2004
  • Laatst online: 27-09 01:04
wappie1980 schreef op dinsdag 18 november 2008 @ 23:18:
Geen idee waar de nullpointerexception vandaan komt

code:
1
2
3
4
5
6
List<Festival> festivalLijst = null;
festival = new Festival("Pinkpop", 1);

if (festival != null) {
   festivalLijst.add(festival);
}


festivalLijst.add(festival); geeft dus de exception

Iemand enig idee? Ik zoek me wezenloos.
Omdat je festivalLijst op null zet en hem daarna niet aanmaakt? -> festivalLijst = new ListVector<Festival>();

Verder kijk je of festival null is, maar ik denk dat je wilt checken of festivalLijst null is?

Dit is eigenlijk best wel basic...

[ Voor 0% gewijzigd door The Fox NL op 18-11-2008 23:40 . Reden: List is slechts een interface, daarom even een Vector gebruikt ]


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 20:36

Haan

dotnetter

Soms is iets zo voor de hand liggend dat je het gewoon niet ziet, gebeurt iedereen wel eens ;)

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Xiliath
  • Registratie: Oktober 2003
  • Laatst online: 30-10-2022
The Fox NL schreef op dinsdag 18 november 2008 @ 23:23:
[...]

Omdat je festivalLijst op null zet en hem daarna niet aanmaakt? -> festivalLijst = new List<Festival>();

Verder kijk je of festival null is, maar ik denk dat je wilt checken of festivalLijst null is?

Dit is eigenlijk best wel basic...
In de documentatie die ik gevinden heb wordt een nullpointer exception gegevens als het object dat je wilt toevoegen null is, tis meer bedoeld dus als debugging code voor mezelf en om duidelijk aan te geven dat het object niet null is.

En inderdaad, erg basic, dom foutje, maar ik ben hier helaas ook nog niet zo heel lang mee bezig.

festival = new Festival("Pinkpop", 1); moest uiteraard Festival voor, had die niet meegepaste |:(

Acties:
  • 0 Henk 'm!

  • The Fox NL
  • Registratie: Oktober 2004
  • Laatst online: 27-09 01:04
wappie1980 schreef op dinsdag 18 november 2008 @ 23:33:
[...]


In de documentatie die ik gevinden heb wordt een nullpointer exception gegevens als het object dat je wilt toevoegen null is, tis meer bedoeld dus als debugging code voor mezelf en om duidelijk aan te geven dat het object niet null is.

En inderdaad, erg basic, dom foutje, maar ik ben hier helaas ook nog niet zo heel lang mee bezig.

festival = new Festival("Pinkpop", 1); moest uiteraard Festival voor, had die niet meegepaste |:(
Ah ok, nu weet je dus ook dat er een null pointerexceptie volgt als je een methode gebruikt op een instantie die null is ;)

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 20:36

Haan

dotnetter

Het lijkt me sowieso niet zo logisch dat je geen null objecten aan je List zou toe mogen voegen, maar hoe dat precies in Java is geregeld weet ik niet. Maar dan zou ik ook eerder iets in de trant van een ArgumentException verwachten.

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • The Fox NL
  • Registratie: Oktober 2004
  • Laatst online: 27-09 01:04
Haan schreef op dinsdag 18 november 2008 @ 23:37:
Het lijkt me sowieso niet zo logisch dat je geen null objecten aan je List zou toe mogen voegen, maar hoe dat precies in Java is geregeld weet ik niet. Maar dan zou ik ook eerder iets in de trant van een ArgumentException verwachten.
Volgens de documentatie ligt het aan de implementatie van de List. In mijn eerdere voorbeeld gebruik ik een Vector, ik weet niet of die zoiets toelaat. De documentatie laat dat in het midden. Gewoon even uitproberen dus.

Acties:
  • 0 Henk 'm!

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Haan schreef op dinsdag 18 november 2008 @ 23:37:
Het lijkt me sowieso niet zo logisch dat je geen null objecten aan je List zou toe mogen voegen, maar hoe dat precies in Java is geregeld weet ik niet. Maar dan zou ik ook eerder iets in de trant van een ArgumentException verwachten.
Ik meen mij te herinneren dat er door Sun wordt aangeraden om - als een argument null is terwijl je een waarde verwacht - een NullPointerException te gooien ipv een IllegalArgumentException.

Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:58

Robtimus

me Robtimus no like you

The Fox NL schreef op dinsdag 18 november 2008 @ 23:23:
[...]
Omdat je festivalLijst op null zet en hem daarna niet aanmaakt? -> festivalLijst = new List VectorArrayList<Festival>();
Gefixed ;)

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

  • The Fox NL
  • Registratie: Oktober 2004
  • Laatst online: 27-09 01:04
Niks mis met een Vector. Ik kan me herinneren dat er altijd een hoop gezeur rond het gebruik van een Vector of ArrayList is, maar ze werken allebei. Tenzij dat de TS natuurlijk null's wil toevoegen aan zijn lijst, dan moet hij wel een ArrayList gebruiken.

Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:58

Robtimus

me Robtimus no like you

Een Vector kan ook null waarden aan (Properties en Hashtable niet), maar is in vrijwel alle gevallen onnodig synchronized. En voor die gevallen geef ik nog steeds de voorkeur aan ArrayList icm Collections.synchronizedList. Maar goed, dat is een hele discussie op zich.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

  • bomberboy
  • Registratie: Mei 2007
  • Laatst online: 15:30

bomberboy

BOEM!

Even uit de API:
As of the Java 2 platform v1.2, this class was retrofitted to implement the List interface, making it a member of the Java Collections Framework. Unlike the new collection implementations, Vector is synchronized.
Tenzij je die syncronization niet nodig hebt is een ArrayList dus doorgaans beter/sneller. Niet dat je het in de meeste applicaties zou merken, maar toch...

[ Voor 0% gewijzigd door bomberboy op 19-11-2008 22:11 . Reden: En net te laat ]


Acties:
  • 0 Henk 'm!

  • rrrandy
  • Registratie: Juli 2005
  • Laatst online: 27-06 13:00
bomberboy schreef op woensdag 19 november 2008 @ 22:10:
Niet dat je het in de meeste applicaties zou merken, maar toch...
Met alle multiple core cpu's van tegenwoordig moet je hier toch voorzichtig mee zijn. Een synchronisatie met twee cores is duurder dan een synchronisatie met een enkele core (denk aan memory barriers).

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
rrrandy schreef op woensdag 19 november 2008 @ 22:28:
[...]


Met alle multiple core cpu's van tegenwoordig moet je hier toch voorzichtig mee zijn. Een synchronisatie met twee cores is duurder dan een synchronisatie met een enkele core (denk aan memory barriers).
Hoewel het 'duur' is (voor beperkte hoeveelheden van duur), moet je dat niet als argument nemen om niet te synchroniseren als het nodig is.
Met Java 5.0 Update 6 bestaat er overigens iets genaamd biased locking: als er altijd maar vanuit een thread gesynchroniseerd wordt, dan wordt de synchronised aanroep genegeerd (of eigenlijk wordt de monitor permanent toegewezen aan de thread), mocht gedurende de uitvoering toch een andere thread de monitor willen verkrijgen, dan pas wordt teruggeschakeld naar echte synchronisatie.
Pagina: 1