16. april 2002 - 22:08Der er
18 kommentarer og 3 løsninger
Hvad betyder dette
Jeg sidder og studere nogle java eksempler og falder over dette som står inde midt i en klasse:
MouseListener ml = new MouseAdapter() { public void mousePressed(MouseEvent e) { int selRow = tree.getRowForLocation(e.getX(), e.getY()); TreePath selPath = tree.getPathForLocation(e.getX(), e.getY()); if(selRow != -1) { if(e.getClickCount() == 1) { mySingleClick(selRow, selPath); } else if(e.getClickCount() == 2) { myDoubleClick(selRow, selPath); } } } }; Det jeg ikke forstår er: MouseListener ml = new MouseAdapter(){ bla ..... }; er det en klasse eller hvad?? /thinge
MouseListener er en interface, hvor der står et mindre antal mentoder, som du skal implementere for at kunne bruge den. Det gider vi normalt ikke, så nogle flinke mennesker har lavet en implementering af MouseListener, som de kalder MouseAdaptor, der indeholder tomme realiseringer af alle disse metoder.
Så kan du nemlig nøjes med at realisere den ene du typisk får brug for.
MouseListener og MouseAdapter er i familie med hinanden og det du gør kaldes polymorfi.
Et object og dets reference behøver ikke være ens. fx Object o = new String("String på Object reference"); eller MinForælderKlasse reference = new MinBarnKlasse();
TreeSelectionListener er ligesom MouseAdapter et interface og implementationen til den speciferede metode valueChanged, gives her med en anonym klasse som. new TreeSelectionListener() {
laver både en ny klasse (nemlig en nedarvning fra KlasseNavn, hvor de anførte metoder typisk overskriver eksisterende) - men klasse har ikke noget navn.
Men "new" laver også et objekt af den nye ikke-navngivne klasse, og det er det den afleverer. Da klassen ikke har noget navn, kan du ikke lave mere end dette ene objekt af klassen
erikjacobsen du forklarer tingene utroligt forståeligt, du burde skrive et IDG-hæfte om java, det ville hjælpe os stakkels datamatikerstuderende til en nemmere start.
Tak tak, codemon. Jeg er i præcis den branche - blot ikke på Bornholm (og heller ikke i - er det ikke - Lyngby?). Men hvorfor skal datamatikerstuderende have en nemmere start...? (Undskyld afbrydelsen, thinge)
aha ingen kære mor fra lærerne... men det er altså som regel programmering 1. semester der smider flest ud, eller et semester om. Ellers må et sådan da være på sin plads, der findes jo til delphi og c++, mm. (ok C++ hæftet er totalt forældet og Kris Jamsa har ikke skabt begreb om OOP)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.