Aloittelian java kysymys

Hei.
Kysyisin semmoista kun olen katsellut tuota javan lähdekoodia jonka saa sieltä sivuilta enkä ymmärrä sitä että miksi on Vector luokan koodissa tälläistä:

public class Vector
extends AbstractList

Mitä tuo tarkoittaa ja jos tuo E on joku olio tai muuttuja niin missä luokassa se on määritelty?

Kiitos.

p.s. tämä ei kylläkään liity linuxiin mitenkään erityisemmin mutta kiva jos vastaatte.

Kyse on käännösaikaisesta tyyppiparametroinnista eli geneerisyydestä ja E on tässä muodollinen tyyppiparametri. Käytännössä kyse on siitä, että kun Vector on geneerinen luokka, niin voit antaa tuohon “E:n kohdalle” sille parametriksi jonkun tyypin. Esimerkiksi Vector on Vector, johon voi tallentaa pelkkiä String-olioita.

eli siis kun on tuo

public class Vector

ja metodi

public void synchronized add(E obj);

ja kirjoitan omaan ohjelmaan.

import java.util.Vector;

Vector v = new Vector();

niin tuo E paikkaantuu Stringillä ja silloin myös metodit tietävät että on String kyseessä.

paikatkaa jos olen väärässä…
anteeksi jos kirjoitin nuo koodit väärin…

[quote=“MHFN, post:3, topic:965”]Vector v = new Vector();

niin tuo E paikkaantuu Stringillä ja silloin myös metodit tietävät että on String kyseessä.[/quote]

Suunnilleen kyllä. Pitäisi varmaankin kirjoittaa Vector v = new Vector();
Ja jos ihan tarkasti teknisesti otetaan, niin Javassa geneerisyys on käännösaikaista, eli kääntäjä tarkistaa tyypit, suorituksen aikana metodit jne. eivät enää tiedä geneerisyydestä käytännössä mitään.