Witam, poniższy kod mi nie działa ma wypisać kolekcję osób zatrudnionych. Klasa Osoba, klasa biuro i startowa. Co tutaj jest źle, jak to poprawić? Błąd na konsoli to:
//Exception in thread "main" java.lang.ClassCastException: Osoba cannot be cast to java.lang.Comparable
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)
at Biuro.zatrudnij(Biuro.java:19)
at Mainowa.main(Mainowa.java:8)//
Czepia się metody zatrudnij i jej wywołania w main. Proszę o pomoc.
//////////////////////// Klasa Osoba
import java.io.Serializable;
/*
* Zdefiniuj klase o nazwie Osoba, która:
(a) posiada konstruktor przyjmujacy dwa argumenty: nazwisko i rok urodzenia, rok między 1800, 2000 jak nie to zwróć wyjątek
(b) implementuje interfejs Serializable.
*/
public class Osoba implements Serializable {
String nazw;
int rok;
public Osoba (String n, int ru){
this.rok=ru;
try {
if (this.nazw != null){
this.nazw=n;
}
} catch (NullPointerException e){
System.out.println("Nie znaleziono nazwiska");
}
try {
if (this.rok>1799 && this.rok<2001){
this.rok=ru;
}
} catch (AssertionError e){
System.out.println("Niepoprawna wartosc roku urodzenia " +
"(oczekiwano wartosci z przedziału od 1800 do 2000)");
}
}
}
//////////////////////// Klasa Biuro
import java.util.TreeSet;
public class Biuro {
TreeSet<Osoba>o;
public Biuro(){
this.o=new TreeSet<Osoba>();
}
void wypisz(){
for (Object os: o){
System.out.println (os+"/n");
}
}
TreeSet<Osoba> zatrudnij(String nazw, int rok){
Osoba os = new Osoba(nazw, rok);
o.add(os);
return o;
}
}
//////////////////////// Klasa "Main"
public class Mainowa {
public static void main(String[] args){
Osoba os=new Osoba("Gienek", 1999);
Biuro b=new Biuro();
b.zatrudnij("Kowalski", 1999);
b.zatrudnij("Nowak", 1965);
b.wypisz();
}
}