hund555 Geschrieben 15. November 2006 Geschrieben 15. November 2006 Hallo, wie kann man den Vector von Klasse A in Klasse B aufrufen? bzw. ihn dorthin klonen? ( clone(); ) danke Zitieren
Sigi Geschrieben 15. November 2006 Geschrieben 15. November 2006 Indem du die Gettermethode des Vectors in Klasse A aufrust oO? Zitieren
hund555 Geschrieben 16. November 2006 Autor Geschrieben 16. November 2006 ich habe einen Vector mit einem Element dadrinne, dieses Element ist von der Klasse Teilnehmer, die von Thread erbt, wenn ich nun vector.toString() aufrufe erscheint [Thread[Thread-x,5,main]] wie kriege ich stattdessen die richtige ausgabe raus? danke Zitieren
geloescht_Newlukai Geschrieben 16. November 2006 Geschrieben 16. November 2006 wie kriege ich stattdessen die richtige ausgabe raus? lol Ähm. Das ist die richtige Ausgabe!? Falls Du aber lieber den Teilnehmernamen hättest, solltest Du in der Klasse Teilnehmer de Methode toString überschreiben. Woher soll den die JVM sonst wissen, was ausgegeben werden soll? Zitieren
hund555 Geschrieben 16. November 2006 Autor Geschrieben 16. November 2006 sorry, klar teilnehmernamen hm..., wie soll den meine neue toString methode aussehen? finde irgendwie keine beispiele bei google. Zitieren
hund555 Geschrieben 16. November 2006 Autor Geschrieben 16. November 2006 sorry, klar teilnehmernamen hm..., wie soll den meine neue toString methode aussehen? finde irgendwie keine beispiele bei google. edit: wenn ich nciht von thread erbe kommt sowas: Teilnehmer@18a7efd die klasse toString sieht nciht unbeschrieben so aus: getClass().getName() + Integer.toString(hashCode()); hab die probiert als test so unzubennen: public void toSTring(){ getClass().getName(); } trotzdem kommt Teilnehmer@18a7efd raus - das kann doch nciht sein? Zitieren
hund555 Geschrieben 16. November 2006 Autor Geschrieben 16. November 2006 sorry, der beitrag davor ist falsch! ich habe bei toSTring T groß geschrieben. wenn ich aber toString jetzt ändern will, gibt der compiler aus dass es nicht überschrieben werden kann hab zb. folgendes eingeben: public void toString(){ Integer.toHexString(hashCode()); } toString() in Server cannot override toString() in java.lang.Object; attempting to use incompatible return type Compilierung beendet Zitieren
_Arvid_ Geschrieben 16. November 2006 Geschrieben 16. November 2006 Doch, das kann sehr wohl sein. Du sollst die Methode ja auch nicht umbenennen (das ist sowieso nicht möglich!). Du sollst sie überschreiben. Dabei darf sich weder der Name, die Parametersignatur noch die Klasse des Rückgabewertes ändern. Es ist einzig möglich, die Kapselung nach gewissen Regeln zu ändern (also nicht frei nach Belieben!). Schau dir in der API Doc von Java die Methode toString() mal an. Vielleicht fällt dir ja der Fehler auf, wenn du ihren Namen mit dem Namen deiner toString-Methode vergleichst. Danach überschreibe sie korrekt. Behalte den Namen bei (achte auch auf Groß- und Kleinschreibung) und der Rest ergibt sich von allein. Als Ausgabe solltest du dann den Namen deiner Teilnehmer-Klasse erhalten, ganz ohne den Hash-Code. Sofern du die Klasse in einem Package hast (ich vermute mal, dass du das nicht hast), wirst du auch noch das Package davor erhalten. Lies dich am besten mal durch die Einsteiger-Lektüre für Java. Einführungen und Tutorials. Derer gibt es unzählige, wie zum Beispiel die Java-Tutorials von Sun. Grüße aus HH Arvid. Zitieren
_Arvid_ Geschrieben 16. November 2006 Geschrieben 16. November 2006 public void toString()Wie schon eben geschrieben: Der Typ (bzw. die Klasse) der Rückgabe darf sich nicht unterscheiden, wenn du die Methode überschreibst. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.