Hallo Leute,
ist es möglich, einen Aufzählungsdatentyp in eine andere Klasse (also nicht die Klasse, in der der Datentyp deklariert wurde) mitzunehmen?
Ich stehe vor folgendem Problem:
Ich habe hier eine Objektklasse mit einem Konstruktor:
Java:
Ich habe ausserdem eine weitere Klasse, in der ich wieder den Aufzählunsdatentyp "Gewinnklassen" benötige. Muss ich diesen dann nochmal definieren?
Falls ich das nämlich tue, sieht meine Klasse "Gewinnermittlung" so aus:
Wenn ich das so mache und den Aufzählunsdatentyp "Gewinnklassen" in jeder Klasse einmal deklariere, bekomme ich bei der Zuweisung "tipp.gewinnklasse = bestimmeGewinnklasse(richtige)" die Fehlermeldung:
incompatible types - found Gewinnermittlung.Gewinnklassen but expected Objektklasse.Gewinnklassen
Denkt der der Compiler also, dass "Gewinnklassen" zwei verschiedene Datentypen sind, weil sie in zwei versch. Klassen definiert sind?!
Wenn ich die erneute Definition weglasse, dann kennt er in der Klasse "Gewinnbestimmung" den Datentyp nicht - ist ja auch klar.
Wie bekomme ich's also hin, dass
- ich ein Objektfeld dieses Datentyps habe
- in einer anderen Klasse aber genauso noch mit haargenau demselben Datentyp operieren kann
?
Kann ich den Datentyp irgendwie superglobal definieren?
Danke schonmal für die Antwort.
Achja: ich habe diese Frage auch in einem anderen Forum gestellt, damit ich mir mehrere Meinungen einholen kann (bin leider kein sehr versierter Programmierer)
ist es möglich, einen Aufzählungsdatentyp in eine andere Klasse (also nicht die Klasse, in der der Datentyp deklariert wurde) mitzunehmen?
Ich stehe vor folgendem Problem:
Ich habe hier eine Objektklasse mit einem Konstruktor:
Java:
Java:
public class Objektklasse
{
enum Gewinnklassen {acht,sieben,sechs,fuenf,vier,drei,zwei,eins,keine};
public Gewinnklassen [] gewinnklasse; /**das soll ein Array sein, der nur aus
*meinen oben definierten Datentyp besteht*/
public Objektklasse
{
this.gewinnklasse = new Gewinnklassen [12] /**hier weise ich dem Objektfeld
*"gewinnklasse", das ja wie oben deklariert ein Array aus meinem
*Aufzählungsdatentyp ist, ein 12 dimensionales Array dieser Art zu*/
}
}
Ich habe ausserdem eine weitere Klasse, in der ich wieder den Aufzählunsdatentyp "Gewinnklassen" benötige. Muss ich diesen dann nochmal definieren?
Falls ich das nämlich tue, sieht meine Klasse "Gewinnermittlung" so aus:
Java:
public class Gewinnermittlung
{
enum Gewinnklassen {acht,sieben,sechs,fuenf,vier,drei,zwei,eins, keine};
public static void weiseGewinnklassezu()
{
int richtige = bestimmeRichtige();
Objektklasse tipp = new Objektklasse (); //erzeugt ein neues Objekt
tipp.gewinnklasse = bestimmeGewinnklasse(richtige); /*soll das Objektfeld
*für die Gewinnklasse meines neu erzeugten Objekts "tipp" mit dem
*Rückgabewert der Methode befüllen */
}
public static Gewinnklassen bestimmeGewinnklasse(int richtige) /*das hier
ist eine Methode, die einen Wert des Datentyps "Gewinnklassen" zurückliefert*/
{
Gewinnklassen gewinnklasse; /*ich deklariere eine Variabel des Datentyps
"Gewinnklasse"*/
if (richtige == 3) gewinnklasse = Gewinnklassen.acht;
return gewinnklasse;
}
}
Wenn ich das so mache und den Aufzählunsdatentyp "Gewinnklassen" in jeder Klasse einmal deklariere, bekomme ich bei der Zuweisung "tipp.gewinnklasse = bestimmeGewinnklasse(richtige)" die Fehlermeldung:
incompatible types - found Gewinnermittlung.Gewinnklassen but expected Objektklasse.Gewinnklassen
Denkt der der Compiler also, dass "Gewinnklassen" zwei verschiedene Datentypen sind, weil sie in zwei versch. Klassen definiert sind?!
Wenn ich die erneute Definition weglasse, dann kennt er in der Klasse "Gewinnbestimmung" den Datentyp nicht - ist ja auch klar.
Wie bekomme ich's also hin, dass
- ich ein Objektfeld dieses Datentyps habe
- in einer anderen Klasse aber genauso noch mit haargenau demselben Datentyp operieren kann
?
Kann ich den Datentyp irgendwie superglobal definieren?
Danke schonmal für die Antwort.
Achja: ich habe diese Frage auch in einem anderen Forum gestellt, damit ich mir mehrere Meinungen einholen kann (bin leider kein sehr versierter Programmierer)