![]() |
[Java] Array-Länge verändern
Morgen.
In Delphi kenn man dynamische Arrays leicht verändern:
Delphi-Quellcode:
In Java mache ich das momentan so:
var a: array of String;
begin //... setlength(a,10); end;
Code:
String a[]=new String[0];
//... a=new String[10]; Problem dabei: Der bisherige Inhalt des Arrays wird gelöscht. Wie kann ich das umgehen? |
Re: [Java] Array-Länge verändern
Du könntest als Alternative eine java.util.ArrayList nehmen. Dessen Größe wird dynamisch angepasst.
![]() |
Re: [Java] Array-Länge verändern
Aber die erwartet ein Object und gibt auch selbiges zurück.
Wie kann ich dann das Object, das get(Index) zurückgibt, in meine Klasse casten? Also praktisch in Delphi ginge das ja so:
Delphi-Quellcode:
(List.Get(0) as TMyClass).myproperty:='blubb';
//oder TMyClass(List.Get(0)).myproperty:='blubb'; |
Re: [Java] Array-Länge verändern
Leider kennt Java keine dynamischen Arrays wie Delphi. Das wäre schön, damit muß man aber nunmal leben.
Mach es einfach zu Fuß
Code:
//Edit:
String[] a=new String[0];
//... String[] b = new String[10]; for (int i = 0; i<=a.length();i++) b[i] = a[i]; a = b; //Eventuell noch b = null; Zu deiner letztem Frage: Jede Klasse in Java ist von Object abgeleitet, stellt also eine Subklasse von Object dar. Hast du also wie zB in deinem Fall einen String in ein Object gesteckt, kannst du ohne weiteres dieses Object auch wieder zu String zurückcasten:
Code:
Ich habe noch nie mit der ArrayList gearbeitet und es gerade auch nicht getestet, aber meinem Verständnis nach müßte es funktionieren.
String(liste.get(index));
|
Re: [Java] Array-Länge verändern
Es ist kein String, sondern eine Klasse.
Und wie greife ich dann auf eine der Variablen der Klasse zu? Also wie kann ich der was zuweisen? |
Re: [Java] Array-Länge verändern
Zitat:
Zitat:
Code:
MyClass(liste.get(index)).MyProperty = "foo";
|
Re: [Java] Array-Länge verändern
Hi,
nur als kleiner Tipp, in Java sollte man ruhig den Typ in den gecastet wird klammern ;-) Genau genommen gibt es in Java zwei Möglichkeiten. Alles was von java.util.List erbt (genauer dieses Interface implementiert) kann dir als dynamisches Array dienen. Insbesondere die ArrayList bietet dir natürlich schon direkt alle Funktionen die du brauchst, du kannst aber auch eine java.util.List in ein Object-Array umwandeln (gibt da eine Funktion). Die eine Möglichkeit ist nun einfach dass hinzufügen und casten. Die Alternative, die ab Java 1.5 / 5.0 verfügbar ist, ist der generische Weg. Wie der Name schon sagt, sind die Datentypen generisch und du musst dich nicht mehr selbst um das casten kümmern. Allerdings musst du dafür halt mind. Version 1.5 installiert haben. Der Aufruf wäre etwas wie :
Code:
Gruß Der Unwissende
java.util.List<DeinTyp> liste = new java.util.ArrayList<DeinTyp>();
liste.add(new DeinTyp()); DeinTyp buffer = liste.get(0); // kein casting nötig, da generisch ... |
Re: [Java] Array-Länge verändern
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz