Array zu Liste - kleines Problem

Hallo!

Ich hab als Aufgabenstellung, dass schon gebildete Array soll durch eine Liste ersetzt werden. Das hab ich soweit auch hinbekommen, bis auf dem Problem, dass Ich in der Ausgabe nur:" [tiere.Katze@31ccbefe, tiere.Pferd@790f2f3c, tiere.Hund@53e64a3b, tiere.Hund@34139285, tiere.Tiger@70f87478, tiere.SuperTiger@47a6ac39]" erhalte, was die Hexadezimal Position wohl sein wird.

Um das Korrekt darzustellen muss ich ja die toString() Methode überschreiben. Da bin Ich mir allerdings unsicher wie genau das funktioniert, da mein Versuch offensichtlich fehlgeschlagen ist:

Java:
import tiere.Hund;
import tiere.Katze;
import tiere.Pferd;
import tiere.SuperTiger;
import tiere.Tier;
import tiere.Tiger;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Arrays;

public class Application {

	public static void main(String[] args) {

		final Tier[] tiere = new Tier[6];

		tiere[0] = new Katze("Katze");
		tiere[1] = new Pferd("Silberpfeil");
		tiere[2] = new Hund("Bello");
		tiere[3] = new Hund("Alfons");
		tiere[4] = new Tiger("Roy");
		tiere[5] = new SuperTiger("Siegfried");

		for (int i = 0; i < tiere.length; i++) {
		System.out.println(tiere[i].getName());
			}
		
		
		
		 List<Tier> Tier2 = Arrays.asList(tiere);
			
		 	for (Tier t : Tier2);{
		 		}
		 		
		 	@Override 
		 	public String toString () {
	 			return this.Tier;
	 			
		 	}
		 		System.out.println(Tier2);

		 	}

}

Der Fehler liegt in Zeile 38. Folgende Fehlermeldung habe Ich bekommen:

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Syntax error on token "String", @ expected
Syntax error, insert "enum Identifier" to complete EnumHeaderName
Syntax error, insert "EnumBody" to complete BlockStatement

at Application.main(Application.java:71)


Ich bin ratlos, wo genau meine Fehler liegen. Ich hoffe ihr könnt mir helfen, oder Tipps geben, wie und wo die toString() Methode implementiert wird.

Schönen Sonntag noch.
Lg
Eslohmtsichnicht
 
In die gepostete Klasse gehört sie auf jeden Fall nicht hin, sondern in die Tier-Superklasse.
 
Ok, das hab Ich mir schon fast irgendwie gedacht.

Trotzdem krieg ich die Fehlermeldung: Tier cannot be resolved or is not a field

falls es hilft, dass ist die Tier SuperKlasse:

Java:
package tiere;


public abstract class Tier implements Comparable {
	
	// Position des Tieres in einem Koordinatensystem
	int x, y;
	
	String name;
	
	public Tier(String name, int x, int y) {
		this.name = name;
		this.x = x;
		this.y = y;
	}

	
	public boolean bewege(int xBewegung, int yBewegung) {
		x += xBewegung;
		y += yBewegung;
		return true;
	}
	
	public abstract String sprich();
	
	public void test() {
		String x = sprich();
		System.out.println("Länge des Satzes: " + x.length());
	}

	public int compareTo(Object o) {
		Tier anderesTier = (Tier) o;
		return this.name.compareTo(anderesTier.name);
	}

	public String getName() {
		return name;
	}
	
	@Override 
 	public String toString () {
			return this.Tier;
			
 	}

}
 
Trotzdem krieg ich die Fehlermeldung: Tier cannot be resolved or is not a field
Java:
@Override 
public String toString () {
	return this.Tier;		
}
Klar, ein Attribut namens "Tier" gibts ja auch nicht. Ich sehe den Sinn eines solchen aber auch nicht. toString() ist dazu da, eine String-Repräsentation des Objekts auszugeben, und nicht das Objekt selbst (davon abgesehen, dass das nicht kompilieren würde).
 
Zuletzt bearbeitet von einem Moderator:
Wie krieg ich denn dann das Problem überhaupt gelöst?

Die Übernahme der Daten vom Array in die Liste hat ja scheinbar funktioniert, sonst würden diese Positionen ja nicht auftauchen?

Ich muss das ja irgendwie korrekt darstellen können.
 
Java:
@Override
public String toString() {
	return getClass().getSimpleName() + " " + name;
}
müsste dir die Namen ausgeben als:
Code:
Katze Katze
Pferd Silberpfeil
Hund Bello
...
 

Neue Themen


Zurück
Oben