Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
derzeit versuche ich mich an enums. (zB. um bei einem Konstruktor als Argument für das Geschlecht nicht "true" oder "false" übergeben zu müssen!):
Java:
enum Geschlecht {MAENNLICH, WEIBLICH};
public class Person {
final private String name;
final private Geschlecht geschlecht;
public Person(String name, Geschlecht geschlecht){
this.name = name;
this.geschlecht = geschlecht;
}
}
Die Main Methode sieht dann so aus:
Java:
public class Main {
public static void main(String[] args) {
Person p1 = new Person("Michael", Geschlecht.MAENNLICH);
}
}
Das funktioniert zwar, gefällt mir aber nicht.
1. warnt der Compiler in Zeile 7 von Person.java: "Exporting non-public type through public API".
2. Warum muß "enum Geschlecht..." VOR "class Person..." stehen? Mir erschiene es sinnvoller, das diese Aufzählung ein statisches Attribut der Klasse Person wäre - oder ist das ein Holzweg? Das habe ich jedenfals nicht hinbekommen.
(nebenbei: ist das soweit plausibel, das name und geschlecht final sind - die Möglichkeit der Geschlechtsumwandlung einmal ausgeschlossen?!)
Der Konstruktor Person ist public aber die enum nicht: Es kann bei der Person nie der Konstruktor mit einem nicht null Geschlecht erstellt werden. Oder anderst gesagt: Niemand sieht das Geschlecht.
zu2:
Ein File kann nur eine public class/interface beherbergen (toplevel). Ausser du macht innere Klassen, was auch hier am besten wäre.
EDIT:
also so:
Java:
public class Person {
public enum Gender {
MALE, FEMALE
};
private final String name;
private final Gender gender;
public Person(String name, Gender gender) {
this.name = name;
this.gender = gender;
}
}
Werde ich bald mal versuchen, für diese Anwendung scheints mir übertrieben, wenns grad nur darum geht, im Konstruktoraufruf für das Geschlecht nicht "true" oder "false" zu schreiben (klar, true wäre dann natürlich weiblich )
Müder Joe, das was Du vorschlägst habe ich schon versucht, leider komt dann beim Konstruktoraufruf in der Main-Methode..
Java:
Person p1 = new Person("Claudia", Gender.FEMALE);
...die Fehlermeldung "canot find Symbol, variable Gender....". Obwohl mir beim schreiben von "Gender." korrekterweise MALE und FEMALE angeboten werden.