🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
8 messages
8 total messages Started by DyXin Sun, 27 Apr 2003 13:48
Java.Util.List
#5434
Author: DyXin
Date: Sun, 27 Apr 2003 13:48
22 lines
1769 bytes
Ik krijg een exception bij het volgende, en ik weet niet onmiddellijk hoe
het komt (t is te zeggen: ik denk dat ik weet hoe het komt, maar ik weet
niet hoe het op te lossen: t heeft te maken met de Java.Util.List klasse):

ik heb een methode:
java.Util.List blabla ();

ik doe vervolgens in een andere klasse:
java.Util.List lijst = X.blabla ();

en dan krijg ik een exception! :-)

Ik heb nog nooit met de Java.Util.List gewerkt, maar blijkbaar zijn de
objecten hiervan niet echt 'pointers' naar objecten: je moet immers geen
'new List()' doen zoals normaal...

In de Java API documentatie heb ik niet direct iets gevonden hier omtrent...

thnx a lot!

mvg,
DyXin
Re: Java.Util.List
#5435
Author: Corno Schraverus
Date: Sun, 27 Apr 2003 14:55
28 lines
2276 bytes
"DyXin" <DyXin@p@ndor@.be> wrote in message
news:fdRqa.64590$t_2.5777@afrodite.telenet-ops.be...
> Ik krijg een exception bij het volgende, en ik weet niet onmiddellijk hoe
> het komt (t is te zeggen: ik denk dat ik weet hoe het komt, maar ik weet
> niet hoe het op te lossen: t heeft te maken met de Java.Util.List klasse):
>
> ik heb een methode:
> java.Util.List blabla ();
>
> ik doe vervolgens in een andere klasse:
> java.Util.List lijst = X.blabla ();
>
> en dan krijg ik een exception! :-)
>
> Ik heb nog nooit met de Java.Util.List gewerkt, maar blijkbaar zijn de
> objecten hiervan niet echt 'pointers' naar objecten: je moet immers geen
> 'new List()' doen zoals normaal...
>
> In de Java API documentatie heb ik niet direct iets gevonden hier
omtrent...
>
List is een interface. Dat heeft als gevolg dat blabla() een implementatie
van java.Util.List terug moet geven, bijvoorbeeld java.Util.Vector. En deze
zul je wel degelijk met een new moeten aanmaken!
Mijn vermoeden is dat je iets raars doet in blabla(). Kun je daar de code
van posten?

Corno
Re: Java.Util.List
#5436
Author: DyXin
Date: Sun, 27 Apr 2003 15:01
23 lines
1870 bytes
> List is een interface. Dat heeft als gevolg dat blabla() een implementatie
> van java.Util.List terug moet geven, bijvoorbeeld java.Util.Vector. En
deze
> zul je wel degelijk met een new moeten aanmaken!
> Mijn vermoeden is dat je iets raars doet in blabla(). Kun je daar de code
> van posten?

hhmmm... raar... In code examples die ik heb wordt wel degelijk
java.Util.List gebruikt en ge-importeerd...

code: gewoon een for-lus:

public List myMethod ()
{
    for (int i = 0; i < arrayOfMyObjects.length; i++) {
        lijst.add(arrayOfMyObjects[i];
    }
    return(lijst);
}

met lijst een java.Util.List object...

DyXin
Re: Java.Util.List
#5437
Author: Rene Pijlman
Date: Sun, 27 Apr 2003 15:10
10 lines
1426 bytes
"DyXin" <DyXin@p@ndor@.be>:
>met lijst een java.Util.List object...

Het lijkt wel of je je best doet om telkens het meest essenti�le
stukje code niet te posten.

-- 
Ren� Pijlman

Wat wil jij leren?  http://www.leren.nl
Re: Java.Util.List
#5438
Author: Stefan Arentz
Date: Sun, 27 Apr 2003 15:12
28 lines
2233 bytes
"DyXin" <DyXin@p@ndor@.be> writes:

> > List is een interface. Dat heeft als gevolg dat blabla() een implementatie
> > van java.Util.List terug moet geven, bijvoorbeeld java.Util.Vector. En
> deze
> > zul je wel degelijk met een new moeten aanmaken!
> > Mijn vermoeden is dat je iets raars doet in blabla(). Kun je daar de code
> > van posten?
> 
> hhmmm... raar... In code examples die ik heb wordt wel degelijk
> java.Util.List gebruikt en ge-importeerd...
> 
> code: gewoon een for-lus:
> 
> public List myMethod ()
> {
>     for (int i = 0; i < arrayOfMyObjects.length; i++) {
>         lijst.add(arrayOfMyObjects[i];
>     }
>     return(lijst);
> }
> 
> met lijst een java.Util.List object...

Sure. Maar als je nu de regel laat zien waar lijst wordt gemaakt dan zal je zien
dat het een andere collection class is.

 S.
Re: Java.Util.List
#5439
Author: DyXin
Date: Sun, 27 Apr 2003 15:30
43 lines
2770 bytes
> > > List is een interface. Dat heeft als gevolg dat blabla() een
implementatie
> > > van java.Util.List terug moet geven, bijvoorbeeld java.Util.Vector. En
> > deze
> > > zul je wel degelijk met een new moeten aanmaken!
> > > Mijn vermoeden is dat je iets raars doet in blabla(). Kun je daar de
code
> > > van posten?
> >
> > hhmmm... raar... In code examples die ik heb wordt wel degelijk
> > java.Util.List gebruikt en ge-importeerd...
> >
> > code: gewoon een for-lus:
> >
> > public List myMethod ()
> > {
> >     for (int i = 0; i < arrayOfMyObjects.length; i++) {
> >         lijst.add(arrayOfMyObjects[i];
> >     }
> >     return(lijst);
> > }
> >
> > met lijst een java.Util.List object...
>
> Sure. Maar als je nu de regel laat zien waar lijst wordt gemaakt dan zal
je zien
> dat het een andere collection class is.

k heb het gevonden :p
het probleem lag hem dus idd bij die Interface: Je kan wel een List object
maken, maar dit is dan 'null'; vervolgens ga je methodes oproepen op een
'null' object => nullPointerException! Wat ik nu heb gedaan is meet een
Vector gewerkt, en in de klasse die deze methode oproept een List object: de
ge-returnde Vector wordt dan aan het List object toegekend en zo kan ik
rustig verder blijven werken door 2 regels code te veradanderen: type
terugkeerwaarde en List vervangen door Vector! ;)

Dom eigenlijk da ik daar ni eerder aan dacht...

any case: thnx!

mvg,
DyXin
Re: Java.Util.List
#5442
Author: Stefan Arentz
Date: Sun, 27 Apr 2003 20:00
60 lines
3490 bytes
"DyXin" <DyXin@p@ndor@.be> writes:

...

> k heb het gevonden :p
> het probleem lag hem dus idd bij die Interface: Je kan wel een List object
> maken, maar dit is dan 'null'; vervolgens ga je methodes oproepen op een
> 'null' object => nullPointerException!

Een List is geen object maar een Interface, als je die probeert te instancieren
dan krijg je al een error tijdens compilatie. Wat jij hier boven schrijft kan
nooit gebeuren.

 // Blah.java

 import java.util.List;

 public class Blah {
   public static void main(String[] arguments) {
     List list = new List();
   }
 }

 % javac Blah.java
 Blah.java:6: java.util.List is abstract; cannot be instantiated
     List list = new List();

> Wat ik nu heb gedaan is meet een
> Vector gewerkt, en in de klasse die deze methode oproept een List object: de
> ge-returnde Vector wordt dan aan het List object toegekend en zo kan ik
> rustig verder blijven werken door 2 regels code te veradanderen: type
> terugkeerwaarde en List vervangen door Vector! ;)

Er is geen List 'object'. Hoe het werkt is als volgt: In de Java collection
classes zijn een aantal interfaces die een soort collectie beschrijven. Zo
is er bijvoorbeeld een List, een Set of een Map. Deze interfaces defineren
de API van de verschillende soorten collecties en hebben een of meerdere
concrete implementaties zoals Vector, HashMap of TreeMap.

Het idee is dat je in je code altijd de interfaces gebruikt voor variabelen,
argumenten en return values. Je kan dan makkelijk van class veranderen indien
dat nodig is; mocht die HashMap niet snel genoeg zijn dan kan je heel makkelijk
veranderen naar een TreeMap. Of desnoods implementeer je je eigen collectie
implementatie.

Dus bijvoorbeeld:

 public class Boe {
    private List mCats = new Vector();
    public List getCats() {
      return mCats;
    }
 }

Vuistregel, de enige plek waar je een collectie *class* gebruikt is op die plek
waar je de allocatie doet. Voor de rest alleen interfaces.

Zo :)

 S.
Re: Java.Util.List
#5443
Author: Ivo
Date: Sun, 27 Apr 2003 21:12
10 lines
1637 bytes
DyXin wrote:

> nullPointerException! 
>
Ik zou je willen adviseren bij je volgende vraag direct te vermelden
*welke* exception je krijgt. Dat je *een* exception krijgt is zinloze
informatie.

-- 
Ivo
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads