Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Zugriff auf in Objekt gespeichertem Objekt einer anderen Klasse

  1. #1
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567

    Zugriff auf in Objekt gespeichertem Objekt einer anderen Klasse

    Hi

    Ich habe da vielleicht ein grundlegendes Verständnisproblem. Ich habe eine Klasse "Kartenspiel" die als Member eine ArrayList hat. In dieser ArrayList habe ich bereits erfolgreich Objekte einer anderen Klass "Spieler" ablegen können. Nun möchte ich aber durch das Objekt der Klasse "Kartenspiel" auf die Elementfunktionen der Objekte der Klasse "Spieler" zugreifen. Ich habe also solch eine Kette

    Code:
    Kartenspiel Spiel = new Kartenspiel();
    Spieler Spieler_1 = new Spieler();
    ...
    ...
    Spiel.addSpieler(Spieler_1);
    ...
    ...
    Spiel.Mitspieler.get(i).getName(); // Funktioniert leider nicht
    "Mitspieler" ist die ArrayList in der Klasse Kartenspiel und "getName()" ist eine Elementfunktion von der Klasse "Person", von der die Klasse "Spieler" abgeleitet ist.

    Würde ich das ganze mit einem normalen Array realisieren, dann funktioniert der Zugriff auf die Funktion "getName()". Nicht aber, wenn ich eine ArrayList benutze. Lässt sich ein solcher Zugriff realisieren oder müsste ich mittels

    Code:
    Spieler_xy = Spiel.Mitspieler.get(i);
    die Daten des Gepeicherten Objekts ersteinmal wieder zugänglich machen? Letztere Lösung finde ich etwas umständlich.

    PS: Sorry, wenn der Betreff nicht wirklich aussagekräftig ist. Mir ist leider nichts wirklich sinnvolles eingefallen, um das Problem zu beschreiben.
    C und C++

  2. #2
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    Bei mir funktioniert folgendes (Sun JDK 1.6.0_13 auf Ubuntu 9.04)

    Spieler.java
    Code:
    package jeebee.test;
    
    public class Spieler {
    	
    	private String name;
    	
    	public Spieler(String name) {
    		this.name = name;
    	}
    
    	public String getName() {
    		return name;
    	}
    }
    Kartenspiel.java
    Code:
    package jeebee.test;
    
    import java.util.ArrayList;
    
    public class Kartenspiel {
    
    	public ArrayList<Spieler> Mitspieler;
    	
    	public Kartenspiel() {
    		Mitspieler = new ArrayList<Spieler>();
    	}
    
    	public void addSpieler(Spieler spieler) {
    		Mitspieler.add(spieler);
    	}
    }
    KartenspielTest.java
    Code:
    package jeebee.test;
    
    public class KartenspielTest {
    
    	public static void main(String[] args) {
    		Kartenspiel Spiel = new Kartenspiel();
    		Spieler Spieler_1 = new Spieler("simon");
    		
    		Spiel.addSpieler(Spieler_1);
    		System.out.println(Spiel.Mitspieler.get(0).getName());
    
    		return;
    	}
    }
    HTH
    jeebee
    Geändert von jeebee (17-05-2009 um 18:00 Uhr)
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  3. #3
    Registrierter Benutzer Avatar von ContainerDriver
    Registriert seit
    10.01.2003
    Beiträge
    418
    Hallo,

    die Frage ist, wie du die ArrayList anlegst? Ich vermute du schreibst nur
    Code:
    ArrayList Mitspieler = new ArrayList();
    . get() liefert dann ein Objekt vom Typ Object zurück, das kennt natürlich nicht die Methoden, die Spieler besitzt.
    Du musst entweder den Rückgabewert von get() casten und kannst dann die Methoden von Spieler aufrufen:
    Code:
    ((Spieler)Spiel.Mitspieler.get(i)).getName();
    ; oder du gibst beim Anlegen der ArrayList an, welche Objekte in der Liste gespeichert werden, dann liefert get() den richtigen Objekttyp zurück:
    Code:
    ArrayList<Spieler> Mitspieler = new ArrayList<Spieler>();
    .

    Gruß, Florian

    EDIT: siehe jeebees Posting
    Ein gebrechlich Wesen ist der X-Server.

  4. #4
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Vielen Dank euch beiden für die schnelle und aufklärende Antwort Klar, ich hab die ArrayList ohne den nötigen Datentyp angelegt und dann ist das Problem verständlich, wenn get() ein Objekt vom Typ "Object" zurück gibt. Danke nochmal
    C und C++

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •