Oliver Gierke
Erfahrenes Mitglied
Hallo zusammen,
ich habe folgende zwei Klassen:
Sinn der Sache soll sein, Studenten und Klausuren zu verwalten. Ich bin jetzt zusaätzlich zur Aufgabenstellung auf die Idee gekommen, dass, sobald man einen Studenten für eine Klausur "anmeldet", dieser auch in die Teilnehmerliste der Klausur eingetragen wird. Ich schreib dazu die Klausur in die Klausurenliste des Studenten und rufe für den Fall, dass er noch nicht in der Teilnehmerliste der Klausur steht die Methode addExam auf. Diese soll nun den Studenten in die Teilnehmerliste eintragen.
Für den Fall eines umgekehrten Aufrufs (Exam.addParticipant) soll natürlich auch geprüft werden, ob die Klausur schon in die Klausurenliste des Studenten eingetragen wurde.
Leider bekomme ich beim Versuch, dem Studenten eine Klausur hinzuzufügen in der methode addParticipant bei der if-Abfrage student.getExams().contains(this) eine ClassCastException. Versteh nur nicht ganz warum? student.getExams() liefert ein Set, this ist vom Typ Exam, als ein Objekt.
Kann wer helfen?
Danke
Ollie
ich habe folgende zwei Klassen:
Code:
import java.util.Set;
import java.util.TreeSet;
public class Student implements GenericStudent {
private String name = null;
private int id;
private Set exams = new TreeSet();
public Student(String studName, int studId) {
name = studName;
id = studId;
}
public int getStudentId() {
return id;
}
public Set getExams() {
return exams;
}
public boolean addExam(Exam exam) throws NullPointerException {
if (exam==null) throw new NullPointerException();
boolean notin = !(exams.contains(exam));
exams.add(exam);
if (!exam.getParticipants).contains(this)) {
exam.addParticipant(this);
}
return notin;
}
public boolean removeExam(Exam exam) throws NullPointerException {
if (exam==null) throw new NullPointerException();
boolean in = exams.contains(exam);
exams.remove(exam);
if (exam.getParticipants().contains(this)) {
exam.removeParticipant(this);
}
return in;
}
}
Code:
import java.util.Set;
import java.util.TreeSet;
public class Exam implements GenericExam {
private String semester;
private String course;
private Set participants = new TreeSet();
public Exam(String examCourse, String examSemester) {
semester = examSemester;
course = examCourse;
}
public String getSemester() {
return semester;
}
public String getCourse() {
return course;
}
public boolean addParticipant(Student student) throws NullPointerException {
if (student==null) throw new NullPointerException();
boolean notin = !(participants.contains(student));
participants.add(student);
if (!student.getExams().contains(this)) {
student.addExam(this);
}
return notin;
}
public boolean removeParticipant(Student student) throws NullPointerException {
if (student==null) throw new NullPointerException();
boolean in = participants.contains(student);
participants.remove(student);
if (student.getExams().contains(this)) {
student.removeExam(this);
}
return in;
}
public Set getParticipants() {
return participants;
}
}
Sinn der Sache soll sein, Studenten und Klausuren zu verwalten. Ich bin jetzt zusaätzlich zur Aufgabenstellung auf die Idee gekommen, dass, sobald man einen Studenten für eine Klausur "anmeldet", dieser auch in die Teilnehmerliste der Klausur eingetragen wird. Ich schreib dazu die Klausur in die Klausurenliste des Studenten und rufe für den Fall, dass er noch nicht in der Teilnehmerliste der Klausur steht die Methode addExam auf. Diese soll nun den Studenten in die Teilnehmerliste eintragen.
Für den Fall eines umgekehrten Aufrufs (Exam.addParticipant) soll natürlich auch geprüft werden, ob die Klausur schon in die Klausurenliste des Studenten eingetragen wurde.
Leider bekomme ich beim Versuch, dem Studenten eine Klausur hinzuzufügen in der methode addParticipant bei der if-Abfrage student.getExams().contains(this) eine ClassCastException. Versteh nur nicht ganz warum? student.getExams() liefert ein Set, this ist vom Typ Exam, als ein Objekt.
Kann wer helfen?
Danke
Ollie