Hallo, ich hänge gerade etwas an einer Aufgabe in der Uni, und zwar folgendes:
Wir sollen eine Klasse Person erstellen. Diese soll die Methoden equals, hashCode und toSting implementieren. Das war noch relativ leicht und hat auch ohne Probleme geklappt.
Nun haben wir einen jUnit-Test bekommen (also der wurde vom Dozenten zur Verfügung gestellt), welchen die Klasse bestehen soll. Mein Problem ist nun folgendes: Er besteht die oben genannten Tests ohne Probleme bis auf einen und ich komme nicht drauf wie ich es ändern soll. Folgend hier der Testabschnitt:
Wenn ich es richtig verstanden habe werden hier alle Modifier der Klasse Person geprüft, ob sie final und private sind. Da ich aber noch 2 andere Klassen hinterher brauche die von der Klasse erben, kann ich dementsprechend doch nicht alle Variablen private und final machen. Irgendwie finde ich meinen Fehler nicht so richtig .
Hier noch meine Klasse Person:
Vielleicht kann mir ja da jemand weiterhelfen, inwiefern ich hier die Modifier bearbeiten sollte.
Wir sollen eine Klasse Person erstellen. Diese soll die Methoden equals, hashCode und toSting implementieren. Das war noch relativ leicht und hat auch ohne Probleme geklappt.
Nun haben wir einen jUnit-Test bekommen (also der wurde vom Dozenten zur Verfügung gestellt), welchen die Klasse bestehen soll. Mein Problem ist nun folgendes: Er besteht die oben genannten Tests ohne Probleme bis auf einen und ich komme nicht drauf wie ich es ändern soll. Folgend hier der Testabschnitt:
Java:
@Test
public void propertiesTest() {
Person p = new Person("Meier", "Hans", 42);
Field[] fields = p.getClass().getDeclaredFields();
for(Field field : fields) {
int mod = field.getModifiers();
assertTrue("All properties should be 'private final'", Modifier.isFinal(mod) && Modifier.isPrivate(mod));
}
}
Wenn ich es richtig verstanden habe werden hier alle Modifier der Klasse Person geprüft, ob sie final und private sind. Da ich aber noch 2 andere Klassen hinterher brauche die von der Klasse erben, kann ich dementsprechend doch nicht alle Variablen private und final machen. Irgendwie finde ich meinen Fehler nicht so richtig .
Hier noch meine Klasse Person:
Java:
package AuDUebung1;
public class Person implements Comparable<Person>{
private String name;
private String vorname;
private int alter;
public Person(String name, String vorname, int alter) {
this.setName(name);
this.setVorname(vorname);
this.setAlter(alter);
}
public int compareTo(Person anotherPerson){
return Integer.compare(this.alter, anotherPerson.getAlter());
}
@Override
public boolean equals(Object obj){
if (obj == null){
return false;
}
Person p = (Person)obj;
if (this.name == p.getName() && this.vorname == p.getVorname() && this.alter == p.getAlter()){
return true;
}
return false;
}
@Override
public int hashCode(){
int hashCode = 11;
int multiplikator = 29;
hashCode = hashCode * multiplikator + (this.name != null ? this.name.hashCode() : 0);
hashCode = hashCode * multiplikator + (this.vorname != null ? this.vorname.hashCode() : 0);
hashCode = hashCode * multiplikator + this.alter;
return hashCode;
}
@Override
public String toString(){
return this.name + ", " + this.vorname + ", " + this.alter;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVorname() {
return vorname;
}
public void setVorname(String vorname) {
this.vorname = vorname;
}
public int getAlter() {
return alter;
}
public void setAlter(int alter) {
this.alter = alter;
}
}
Vielleicht kann mir ja da jemand weiterhelfen, inwiefern ich hier die Modifier bearbeiten sollte.