Java Frage zu Benutzung von dem Typen enum

Zerstoerer

Lieutenant
Registriert
Okt. 2010
Beiträge
688
Hallo zusammen,

bin grade dabei ein kleines Programm zu schreiben und scheitere schon am Anfang. Mein Programm sieht im Moment so aus:

Code:
public class Author {
  String name;
  Birthdate birthdate;
  static enum sex {male , female};
  
  public Author(String name, Birthdate birthdate, String sex) {
    this.name = name;
    this.birthdate = birthdate;
    
    }
}

Noch bin ich aber in der Benutzung von dem Wert enum nicht so sicher. Ich wollte jetzt eigentlich nur, das der Wert sex durch den Konstruktor eben neu gesetzt wird. Aber es will leider nciht funkrionieren.
Könnt ihr mir da helfen?

Wäre dankbar für ein paar Tipps.
 
Hoi,

enum ist wie ein Type zu behandeln, d.h. nach der Definition musst du noch ein neues Attribut von diesem Typ definieren, dem der Wert zugewiesen wird. Bspw. so:

Code:
public class Author {
  String name;
  Birthdate birthdate;
  SexType sex;
  static enum SexType {male , female};
  
  public Author(String name, Birthdate birthdate, SexType sex) {
    this.name = name;
    this.birthdate = birthdate;
    this.sex = sex;
    }
}
 
Was sagt denn der Compiler? Die Syntax von Enums kann man doch leicht nachschauen...
 
@capFuture: Wenn ich das so mache, wie du es geschrieben hast, kommt der Fehler im Konstruktor:

Author2.java:7:10: error: invalid method declaration; return type required

@soares: Der Compiler sagt, dass Author.java:9:9: error: cannot find symbol, also ich glaube, der erkennt meine variable sex als enum nicht.
 
Ich habe mir nochmal andere enum Beispiele angesehen, kann aber keinen Unterschied zu meiner Syntax sehen.
 
Wenn du öfter mal zwischendurch Code posten würdest, müsste man nicht so im Trüben fischen. Der Code von CapFuture ist (zumindest syntaktisch) korrekt .
 
Wenn ich aber diesen Code 1:1 kopiere, funktioniert der bei mir nicht. Und was soll ich für weiteren Code posten? Anders ist mein Code vom Anfang auch noch nicht, weil bisher nichts funktioniert hat.
 
Wenn ich ihn kopiere funktioniert er [abgesehen von der Birthdate-Klasse, die ich natürlich selbst erzeugen (lassen) muss]. Das heißt wenn bei dir etwas noch nicht geht hast du den Fehler entweder in einer anderen Datei oder du hast den von hier kopierten Code nur in anderen Code eingefügt und dieses Konstrukt verträgt sich nicht.
Es bleibt jedenfalls Jacke wie Hose - der Code da ist syntaktisch korrekt (die Enum-Werte bitte durchweg großschreiben, also MALE und FEMALE) und beantwortet deine Frage.
 
Ich habe es nochmal versucht, klappt jetzt irgendwie. Habe es jetzt auch besser verstanden, wie man das deklariert.

Vielen Dank für die Hilfe.
 
Zerstoerer schrieb:
Author2.java:7:10: error: invalid method declaration; return type required
Der Code von capFuture funktioniert, wenn du deine Datei Author.java anstatt Author2.java nennst. Klassenname = Konstruktorname = Dateiname
 
Die Enumeration sollte nicht "sex" oder "SexType" heißen, sondern "Gender". Wenn englisch, dann richtig, bitte. ;)
 
Thunder Cat schrieb:
Wenn englisch, dann richtig, bitte. ;)
Genau. Und da es hier um das Geschlecht einer Person geht, ist "sex" durchaus das richtige Wort dafür (nicht zu verwechseln mit dem Verb) ;)
 
Gemeint war: Das Substantiv in Verbindung mit einem Verb.
 
Es ging ihm wohl darum, dass "sex" eher dann verwendet wird, wenn es wirklich um den biologischen/medizinischen Aspekt des Geschlechts geht. Transgende Leute o.ä. wollen in der Gesellschaft aber nicht unbedingt als das angesehen werden, was sie biologisch sind, und deshalb passt allgemein "gender" besser. In Deutschland ist einfach alles nur "Geschlecht".
Meistens ist es aber eh besser, einfach nur nach der Anrede zu fragen, dann umgeht man solche Probleme.

edit: ziemlich off-topic :p
 
Zurück
Oben