12. maj 2008 - 13:59
Der er
1 kommentar og
1 løsning
compareTo med ukendte objekter
Hej...
Jeg forsøger at skrive en metode, der tager to objekter som argumenter. Og som så skulle kunne sammenligne dem via compareTo, så jeg senere kan definere netop denne metode for mange forskellige objekter. Altså noget lign.:
public int sort(Object ob1, Object ob2) {
return ob1.compareTo(ob2);
}
Nogen måde at dette ville være muligt... Har lidt svært ved at se hvordan jeg implementerer "Comparable" i ob1 og ob2.
På forhånd tak for hjælpen
Du kan ikke sortere vilkaarlige objekter.
Du skal have en compareTo som sammenligner objekter af samme type.
Den her kan f.eks. sorteres:
public class Medarbejder implements Comparable<Medarbejder> {
private int nr;
private String navn;
private String stilling;
public Medarbejder(int nr) {
this(nr, "", "");
}
public Medarbejder(int nr, String navn, String stilling) {
this.nr = nr;
this.navn = navn;
this.stilling = stilling;
}
public int getNr() {
return nr;
}
public void setNr(int nr) {
this.nr = nr;
}
public String getNavn() {
return navn;
}
public void setNavn(String navn) {
this.navn = navn;
}
public String getStilling() {
return stilling;
}
public void setStilling(String stilling) {
this.stilling = stilling;
}
@Override
public String toString() {
return "[" + nr + "," + navn + "," + stilling + "]";
}
@Override
public boolean equals(Object o) {
if(o instanceof Medarbejder) {
Medarbejder m = (Medarbejder)o;
return (m.nr == this.nr);
} else {
return false;
}
}
@Override
public int hashCode() {
return navn.hashCode();
}
@Override
public int compareTo(Medarbejder m) {
return navn.compareTo(m.navn);
}
}
foer generics (Java 1.4 og tidligere) tog compareTo Object og man var noedt til
at caste i metoden.