WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 01.07.2003, 17:03   #1
zenit
Jr. Member
 
Registriert seit: 17.05.2001
Alter: 52
Beiträge: 80


Standard Java Zugriffsproblem

Hi Leutens!
Hab hier ein Problem, bei dem ihr mir sich helfen könnt...

Warum!?!?!...
kann ich hier (siehe unten) die Methode get_Name() nicht verwenden?
Ich greife doch mit elementAt() auf das im Vector befindliche Objekt zu und in weiterer Folge mit get_Name() auf dessen Namen.

Wenn ich beispielsweise die Methode get_Name() nach new NamedVector("client_"+i) aufrufe, somit also keine Vectoren im Vector sondern nur deren Namen und somit einen String speicher und danach den Vectorinhalt ausgebe, erhalte ich in der Ausgabe die jeweiligen generierten Namen.

nixversteh...

G


Vector listOfClients=new Vector();

for(int i=0;i<10;i++){
this.listOfClients.add(new NamedVector("client_"+i));
}
for(int i=0;i<10;i++){
System.out.println("all clients in list: ");
System.out.println(listOfClients.elementAt(i).get_Name());
}


______________________

public class NamedVector
extends Vector{

private String vectorname;


public NamedVector(String vectorname) {
this.vectorname = vectorname;
}
public void set_Name(String vectorname){
this.vectorname=vectorname;
}
public String get_Name(){
return vectorname;
}
}
___________________________
____________________________________
> > > Bei mir gib\'s keine Viren ich hab ne Putzfrau < < <
zenit ist offline   Mit Zitat antworten
Alt 01.07.2003, 17:51   #2
Tarjan
Quantensingularität
 
Registriert seit: 28.09.2000
Alter: 55
Beiträge: 8.336


Tarjan eine Nachricht über ICQ schicken
Standard

Wenn du den Vektor so ableitest, bekommst du mit elementAt aber den Inhalt, also das gespeicherte Objekt zurück. Und das ist ein Objekt und ein Objekt hat die Methode getName nicht.
____________________________________
Was ist klein, grün und dreieckig?
Ein kleines grünes Dreieck!


Bahnübergänge sind die härtesten Drogen der Welt! Ein Zug und du bist weg!
Tarjan ist offline   Mit Zitat antworten
Alt 01.07.2003, 22:21   #3
Who-T
Elite
 
Registriert seit: 01.08.2000
Beiträge: 1.395


Who-T eine Nachricht über ICQ schicken
Standard

((Vector)listOfClients.elementAt(i)).getName();

dieses problem sollt sich beim jdk1.5 mit den generics endlich erübrigt haben


konvention für getter/setter in java is übrigens ohne unterstrich
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees.
Who-T ist offline   Mit Zitat antworten
Alt 02.07.2003, 08:00   #4
zenit
Jr. Member
 
Registriert seit: 17.05.2001
Alter: 52
Beiträge: 80


Standard nö aber so

Hi!

Danke für eure Antworten!
@ Who-T: Leider funktioniert deine Version auch nicht. Auch nicht mit NamedVector.

So is es zwar nicht schön, aber es funkt...

for(int i=0;i<10;i++){
this.listOfClients.add(new NamedVector("client_"+i));
}
System.out.println("all clients in list: ");
for(int i=0;i<10;i++){
NamedVector nm=(NamedVector)listOfClients.elementAt(i);
System.out.println(nm.get_Name());
}



____________________________________
> > > Bei mir gib\'s keine Viren ich hab ne Putzfrau < < <
zenit ist offline   Mit Zitat antworten
Alt 02.07.2003, 08:18   #5
Tarjan
Quantensingularität
 
Registriert seit: 28.09.2000
Alter: 55
Beiträge: 8.336


Tarjan eine Nachricht über ICQ schicken
Standard

Der Named Vektor erfüllt lange nicht die Bedingung dass für jedes Objekt ein Name gespeichert wird. Bisher wird nur ein Name gespeichert. Soll für jedes Objekt ein Name gespeichert werden, so muss statt des Strings ein Vektor oder eine ArrayList verwedet werden, die zu jeden Element den Namen speichert. Weiters muss jede Zugriffsmethode (also jedes add, elementAt, remove etc.) überschrieben werden wobei jeder Name hinzugefügt bzw. gelöscht oder ersetzt wird. Dann ist zu jeden Objekt ein Name gespeichert, und kann zB. mit einer Methode getName(i) abgerufen werden.
____________________________________
Was ist klein, grün und dreieckig?
Ein kleines grünes Dreieck!


Bahnübergänge sind die härtesten Drogen der Welt! Ein Zug und du bist weg!
Tarjan ist offline   Mit Zitat antworten
Alt 02.07.2003, 09:05   #6
Who-T
Elite
 
Registriert seit: 01.08.2000
Beiträge: 1.395


Who-T eine Nachricht über ICQ schicken
Standard

@zenit

klammerung beachten
(NamedVector)list.elementAt(i).getName() -> geht nicht
((NamedVector)list.elementAt(i)).getName() -> geht

@tarjan
ich habs net verstanden was du meinst, kannst du das nochmal erklären?
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees.
Who-T ist offline   Mit Zitat antworten
Alt 02.07.2003, 12:05   #7
Tarjan
Quantensingularität
 
Registriert seit: 28.09.2000
Alter: 55
Beiträge: 8.336


Tarjan eine Nachricht über ICQ schicken
Standard

Der Erklärung nach will er ja für jedes Element einen Namen speichern. So wie es realisiert wurde speichert er aber nur einen Namen für den Vektor. Wenn man für jedes Element einen Namen speichern will, so muss man die Elementzugriffstmethoden auch überschreiben.
____________________________________
Was ist klein, grün und dreieckig?
Ein kleines grünes Dreieck!


Bahnübergänge sind die härtesten Drogen der Welt! Ein Zug und du bist weg!
Tarjan ist offline   Mit Zitat antworten
Alt 02.07.2003, 12:42   #8
zenit
Jr. Member
 
Registriert seit: 17.05.2001
Alter: 52
Beiträge: 80


Standard Klammerung

@Who-T

1)
Danke für den Hinweis!
Hab mich grad eingeloggt, weil ich das Tüfteln nichtlassen konnte und noch nen Kollegen gefragt hab warum's nicht so geht wie ich will.
Da sind wir dann auch auf die Klammerung gestossen (was ich eigentlich jetzt hier posten wollte).

2)
Danke für den Hinweis bez. Konventionen


@Tarajan

1)
behandelnde Funktion...

public void addToClientlist(String clientname){
if(listOfClients.add(new NamedVector(clientname))){
System.out.println("Client << "+clientname+" >> added to List!");
}
System.out.println("Actual list of clients:");
for(int i=0;i<listOfClients.size();i++){
NamedVector nm=(NamedVector)listOfClients.elementAt(i);
System.out.println("\t\t"+nm.get_Name());
}

}

Ausgabe des Programms...
----------------------------------
Server accepted 3. client request!
sending greetings...!
Client answered: cr§7§client3
Command: cr
Data Length: 7
Client << client3 >> added to List!
Actual list of clients:
client1
client2
client3
sending eventlist to client3


2)
Bitte nochmal erklären was du meinst, hab das auch noch nicht gecheckt...
____________________________________
> > > Bei mir gib\'s keine Viren ich hab ne Putzfrau < < <
zenit ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:37 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag