Vector

dadom110

Erfahrenes Mitglied
Moin Zusammen,

beschäftige mich gerade mit Vektoren, und da hätte ich ein kleine Problem: Vektoren nehmen ja nur Objekte auf, kann man das ändern? Also das er nur Integer Werte oder nur Objekte eines bestimmten Typs aufnimmt? Weil nehmen wir mal an ich erstelle ein Vektor der JTextFields aufnimmt, ist ja alleine schon das ändern des Feldtextes ein Beinbruch, würde doch so aussehen:

Code:
public void tAccess()
	{
		Vector vec=new Vector(10,1);
		JTextField txt_feld=new JTextField("Hallo");
		vec.addElement(txt_feld);
		
		if (vec.get(0) instanceof JTextField) {
		((JTextField)vec.get(0)).setText("Neu");}
	}

Dann müsste ich ja bei jeder Textfeld Funktion die Abfrage machen, ob es denn ein Textfeld ist, kann man das nicht eingrenzen, das man nur Textfelder einfügen kann, damit man sich diese Überprüfung spart?

Mfg
Dom
 
Wenn du Java 1.5 verwendest, dann kannst du Templates einsetzen. Ich hab dazu leider noch nichts gemacht, aber Mr. Google sollte sicherwas zum Thema Syntax finden denk ich :p

Gruß
TOM
 
Ok, scheinbar tue ich das nicht, Fehler beim Paramer (< > )
"Syntax error, parameterized types are only available if source level is 5.0"

Aber ich hab das neueste, dachte ich bis dato zumindest, das heisst fast das neueste, das letzte Update hat er vor ein paar tagen agebrochen, zur Zeit "Version 1.5.0 (Build 1.5.0_05-b05)" Damit sollte das gehen? Also ich weiss nicht warum du jetzt ne "list" benutzt, aber wenn ich das mit meinem Vector zu versuche, bekomme ich oben erwähnt Fehlermeldung.

Code:
Vector<JTextField> vec=new Vector<JTextField>(10,1);

In der API steht auch was von dem <E>, aber da wird irgendwie auf Interface Iterable<T> verwießen, bin mir nicht sicher ob ich das richtig Interpretiert habe :(

Mfg
Dom
 
Hi,

sieht ganz so aus, als ob da in Deiner Entwicklungsumgebung die Compiler-Einstellung nicht passt. Für den Fall dass du eclipse nutzt, schau mal unter Window -> Preferences -> Java -> Compiler. Da kannst du dann Deinen Compiler auf JDK 1.5 umstellen.

Falls du ne andere IDE benutzt ... keine Ahnung wo das einzustellen ist

Ich hoffe das hilft dir weiter...
 
mart hat gesagt.:
schau mal unter Window -> Preferences -> Java -> Compiler. Da kannst du dann Deinen Compiler auf JDK 1.5 umstellen..

ahhh ich habs gefunden :) dank dir, das wars, jetzt erkennt er die die <> :) Super, wieder was gelernt, funktioniert einwandfrei, danke ! Eine Altmodische Variante für das Problem gibt es nicht oder? Also falls User des Programms eine ältere Version von Java installiert haben, wird das Programm ja sicherlich nicht laufen ?!

Dom
 
Zuletzt bearbeitet:
Hi,

ja, da hast du recht. Vor JDK-1.5 läuft das nicht. Die altmodische Variante mit der instanceof-Prüfung war dir ja zu umständlich ;)
 
Hi..

was gibt es denn für Vor-/Nachteile zwischen einem Vektor und einem Array? Ich meine schöner ist beim Array ja die mehrdimensionalität, bei nem Vektor müsste man da ja wieder einen Vektor machen der wiederum Vektoren in sich trägt. Weswegen ich bei meinem Programm von nem Array auf einen Vektor umgestellt habe, ist die dynamische Erweiterung, bei nem Array müsste ich dann ja eine extra Funktion schreiben, die den Array zwischenspeichert, den alten Array erweitert und dann die Werte wieder einsetzt, das erspart mit der Vector. Ein paar Erfahrungen von den "alten"-"Hasen"?

Mfg
Dom
 
Hi Dom,

tja, also soooo alt ist der Hase jetzt auch noch nicht :) Bin auch gerade am Java-lernen.

Im Prinzip hast du den größten Unterschied zwischen Array und Vector ja schon genannt (dynamische Erweiterbarkeit). So spontan fällt mir da jetzt nix weiter dazu ein...

Aber für dein konkretes Problem mit den "< >" ist das ja eigentlich ohne Belang, oder?
 
Einfach mal in die Doc schaun :p Vector

Gruß
TOM

PS: warum ich List und nicht Vector genommen --> gegooglet und das erste Beispiel mit Templates genommen ;)
 
Zurück