Gå til innhold

Generere nytt navn til nytt objekt av en klasse


Anbefalte innlegg

Hei!

 

Mulig dette er relativt lett, men jeg kan ikke finne ut hvordan det gjøres.

 

Jeg laster inn en mp3 fil vha. JFileChooser, og ønsker å lage en spilleliste. Jeg har laget en klasse jeg kaller mp3, og tenkte jeg kunne lage et nytt objekt av denne klassen for hver gang.

 

mp3 klassen er kun String filnavn; og String Path; med getter og setters.

 

Jeg tenkte jeg kunne deklarere int n for deretter hver gang filen lastes å kjøre

 

ArrayList<mp3> al=new ArrayList<mp3>();

mp3 n = new mp3();

n.setFilnavn(file.getName());

n.setPath(file.getPath());

n++;

al.add(n);

 

 

Men navnet på objektet blir da ikke 1, 2, 3, 4 osv men kun n.

Hvordan kan jeg gi klassen et nytt navn hver gang denne biten kjøres?

 

Jeg har forsåvidt ingen idè om denne koden vil fungere, men ønsker kun å vite hvordan man kan lage objekter med forskjellige navn automatisk?

Endret av Cemi
Lenke til kommentar
Videoannonse
Annonse

Denne koden vil ikkje fungera. Du kan ikkje inkrementera n, då dette ikkje er ein int. Litt usikker på kva du eigentleg vil med denne koden, men dersom du vil gje objekta eit namn, kan du laga eit id-felt elns i den aktuelle klassen, for så å samanlikna på id når du skal ha tak i objektet.

 

edit: Du kan forøvrig ha n som ein global int-variabel, men ser fortsatt ikkje heilt kvifor :)

Endret av ratata
Lenke til kommentar

Edit for å prøve på en mer direkte forklaring:

Jeg vil gi instansen av mp3 jeg lager navnet til verdien n, og deretter inkrementere n slik at neste gang får den verdien som er n(original)+1. For ekempel om jeg ville hatt notasjonen "sanger"+n i en string ville jeg fått sanger1, deretter sanger2. Jeg vil at hver gang den koden kjøres genereres en instans av klassen med et nytt navn. *Edit slutt*

 

Jeg skal lage en spilleliste til en mp3 spiller, og synes det virker fornuftig å lagre dette i en ArrayList.

 

Dersom du har lest teksten så skrev jeg at jeg hadde tidligere definert

int n;

 

Jeg vil at den skal lage et objekt av klassen mp3 med path og filnavn til den aktuelle filen, og lagre denne i arrayen, for så å kunne skrive denne til en fil og skifte frem og tilbake mellom sanger :)

 

Men den vil ikke bruke n som en int, men definerer det som et navn n istedefor verdien av n.

 

Dersom det gir noe mening?

 

Jeg ønsker at koden skal når jeg åpner første sang definere

 

al[0] = mp3(0) - Altså den lagrer instansen av mp3 som jeg lagersom skal hete 0. Deretter n++ inkrementerer så den neste blir hetende 1.

al[1] = mp3(1)

al[2] = mp3(2)

Sikkert feil notasjon, men håper å få frem poenget :)

Endret av Cemi
Lenke til kommentar
...

Dersom du har lest teksten så skrev jeg at jeg hadde tidligere definert

int n;

 

Jeg vil at den skal lage et objekt av klassen mp3 med path og filnavn til den aktuelle filen, og lagre denne i arrayen, for så å kunne skrive denne til en fil og skifte frem og tilbake mellom sanger :)

 

Men den vil ikke bruke n som en int, men definerer det som et navn n istedefor verdien av n.

 

Dersom det gir noe mening?

 

Jeg ønsker at koden skal når jeg åpner første sang definere

 

al[0] = mp3(0) - Altså den lagrer instansen av mp3 som jeg lagersom skal hete 0. Deretter n++ inkrementerer så den neste blir hetende 1.

al[1] = mp3(1)

al[2] = mp3(2)

Sikkert feil notasjon, men håper å få frem poenget :)

n er i koden du har postet en referanse til en mp3, og kan derfor ikke inkrementeres med ++. Hvis du har deklarert en int n et annet sted i koden er denne nå «overskygget» av mp3 n'en. Hvis alle variablene dine skal hete det samme må du regne med sånne problemer :o)

 

Hvis du bare fjerner "n++;" fra den første kodesnutten du postet, vil alt fungere fint (ser det ut som). En ArrayList holder styr på indexen av seg selv når du bruker .add-metoden.

 

Når du skal hente ut kan du gjøre noe sånt som

 

for (mp3 mp3 : al) {
  System.err.println("sang: " + mp3.getName());
}

// eller slik (legg på null-sjekk for real life app)

for (int i = 0; i < al.size(); i++) {
 System.err.println("sang: " + al.get(i).getName());
}

 

Husk også at en ArrayList ikke er en Array, og at du bør følge navnekonvensjoner, dvs. bruk fornuftige variabelnavn, ikke al og n, og klassenavn begynner med stor forbokstav, altså klassen skal hete Mp3, og referansen kan hete mp3, eller noe annet.

 

Du kan lese litt mer her: http://leepoint.net/notes-java/data/collec.../arraylist.html

Endret av quantum
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...