Avatar billede humanoid Nybegynder
03. oktober 2007 - 09:15 Der er 8 kommentarer

Dynamisk brug af new operator

Er det muligt dynamisk at bruge new operatoren f.eks.
  TimeSeries (s+i) = new TimeSeries();

Eller er det muligt at nedlægge f.eks.:
  TimeSeries s1 = new TimeSeries();

Så det er muligt at oprette den igen.
Dvs.:

Opret:
  TimeSeries s1 = new TimeSeries();
Nedlæg s1
Opret:
  TimeSeries s1 = new TimeSeries();

Håber det er forklaring nok.
Avatar billede erikjacobsen Ekspert
03. oktober 2007 - 09:23 #1
TimeSeries s1 = new TimeSeries();
  s1 = new TimeSeries();

Ved tilordning nummer 2 nedlægges den første når garbagecollector kommer forbi.
Avatar billede humanoid Nybegynder
03. oktober 2007 - 14:47 #2
Dvs. det ikke er muligt at oprette benævnelsen "s1" dynamisk ?
Avatar billede humanoid Nybegynder
03. oktober 2007 - 14:51 #3
Det er fordi jeg skal bruge en række data til at oprette en graf med (jfreechart)
Dataene trækker jeg ud af en database, og jeg ved ikke på forhånd hvor mange forskellige jeg har.
Avatar billede erikjacobsen Ekspert
03. oktober 2007 - 15:03 #4
Så bruger du en ArrayList
Avatar billede jakoba Nybegynder
03. oktober 2007 - 15:04 #5
Java sproget er et kompileret sprog, så nej, du kan ikke dynamisk oprette og nedlægge  variabelnavne.

Du kan dog opnå nogenlunde den samme effekt ved at benytte et array eller et HashMap

eg:
public TimeSeries[] s = new TimeSeries[100];
      // array så du nu efter behow kan oprette TimeSeries objekter
      // med navnene s[0] til s[99];
public HashMap mitMap;
      // læs om hashmaps her: http://java.sun.com/j2se/1.3/docs/api/java/util/HashMap.html
// du kan så 'oprette ev variabel 's1' med:
mitMap.put("s1",new TimeSeries()); // hvis s1 war i brug allerede frigives den gamle.
// og finde den igen med
TimeSeries temp = (TimeSeries)mitMap.get("s1");

Det er lidt mere kluntet end i et scriptsprog, men til gengæld går det meget hurtigere når programmet eksekveres.

mvh JakobA
Avatar billede arne_v Ekspert
03. oktober 2007 - 16:42 #6
Et array eller en List eller en Map må være vejen frem.

List og Map er blevet lidt kønnere i 1.5+:

private Map<String,TimeSeries> mitMap;
...
mitMap.put("s1",new TimeSeries());
TimeSeries temp = mitMap.get("s1");
Avatar billede humanoid Nybegynder
15. oktober 2007 - 09:00 #7
Jeg har brugt erikjacobsen´s "Svar", tak for hjælpen do. Kan du ikke lige ligge et svar så du kan få point.
Avatar billede erikjacobsen Ekspert
15. oktober 2007 - 09:23 #8
Jeg samler slet ikke på point, tak.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester