Går det att överlagra operatorer i Java och isåfall hur?
Vad jag vill göra är att jag har objekt av typen User, och vill bestämma hur Java gör för att jämföra två users...
exv user1 == user2 ska ge true om de har samma användarnamn, oavsett om det är exakt samma objekt eller inte..
detta för att jag ska kunna använda inbyggda funktioner för att t.ex. se ifall ett objekt finns i en lista...
/anders
PhorpherMedlem sedan feb. 20002 300 inlägg Nej, det finns inte operatoröverlagring i Java.
Däremot kan du i ditt fall med fördel implementera ett Interface kallat Comparable som gör det du vill. :i
Eh, okej. Jag kollade Java API litegrann för att se vad det var för något, men jag tror inte jag förstod så mycket av hur det skulle användas direkt.
Är det alltså min klass User som ska implementera interfacet Comparable? Och vad måste jag göra sen för att det ska ske på rätt sätt?
/Anders
beikerMedlem sedan juli 200194 inlägg Du kan ju "over-rajda" metoden equals(Object obj) från Object och där bestämma hur dom ska jämföras.
PhorpherMedlem sedan feb. 20002 300 inlägg Låt User implementera Comparable. Comparable innehåller en metod kallad compareTo(Object o).
Du implementerar själv denna metoden i klassen User.
Metoden fungerar som så att den tar ett objekt av klassen User som argument och jämför en eller flera av detta objekts värden med "sig själv."
User usr = new User("Greger");
User usr2 = new User("Arne");
if(usr.compareTo(usr2) == 1)
// Inte samma namn...
Det finns sedan en mängd olika metoder i listor m.m som använder denna compareTo-metod för att göra jämförelser.
Du kan t.ex. sortera en lista eller leta efter "dubletter"...
Red:
beiker skrev:
Du kan ju "over-rajda" metoden equals(Object obj) från Object och där bestämma hur dom ska jämföras.
Ja, det är nog mer rätt i det här läget när jag tänker efter. :bire
Ah,
så listan använder sig av equals() för att se ifall det är samma objekt? för i såna fall fungerar det ju bra.. ;)
Annars kan jag testa lite olika saker, jag har lite uppslag nu iaf.
Tack!
/Anders