🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #5442

Re: Java.Util.List

#5442
From: 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.
Technical Details
Message-ID: <87isszsocb.fsf@keyser.soze.com>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-09!supernews.com!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!news-FFM2.ecrc.net!news.hamburg.cityline.net!newsfeed.hamburg.cityline.net!kleenex.wirehub.nl!news.wirehub.nl!not-for-mail
References: <fdRqa.64590$t_2.5777@afrodite.telenet-ops.be> <b8gr13$rab$1@news.tudelft.nl> <YgSqa.64687$t_2.5706@afrodite.telenet-ops.be> <877k9gnfem.fsf@keyser.soze.com> <iISqa.64727$t_2.5680@afrodite.telenet-ops.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: 107324,d43233f99695a9a5
X-Google-Attributes: gid107324,public
X-Google-Thread: fcea4,d43233f99695a9a5
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2003-04-27 13:06:05 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-09!supernews.com!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!news-FFM2.ecrc.net!news.hamburg.cityline.net!newsfeed.hamburg.cityline.net!kleenex.wirehub.nl!news.wirehub.nl!not-for-mail
From: Stefan Arentz <stefan.arentz@soze.com>
Newsgroups: be.comp.programming,nl.comp.programmeren
Subject: Re: Java.Util.List
Date: 27 Apr 2003 22:00:04 +0200
Organization: Wirehub! Internet, The Netherlands
Lines: 60
Message-ID: <87isszsocb.fsf@keyser.soze.com>
References: <fdRqa.64590$t_2.5777@afrodite.telenet-ops.be> <b8gr13$rab$1@news.tudelft.nl> <YgSqa.64687$t_2.5706@afrodite.telenet-ops.be> <877k9gnfem.fsf@keyser.soze.com> <iISqa.64727$t_2.5680@afrodite.telenet-ops.be>
NNTP-Posting-Host: newsreader2.wirehub.nl
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-Trace: thor.wirehub.nl 1051473723 14347 195.86.128.19 (27 Apr 2003 20:02:03 GMT)
X-Complaints-To: abuse@wirehub.net
NNTP-Posting-Date: 27 Apr 2003 20:02:03 GMT
User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2
Cache-Post-Path: newsreader2.wirehub.nl!unknown@keyser.soze.com
X-Cache: nntpcache 2.4.0b2 (see http://www.nntpcache.org/)