Trochę ponad rok temu podczas pracy z NetBeansem i SVNem, często witał mnie taki oto komunikat:
This client is too old to work with working copy ; please get a newer Subversion client
Ostatnio podobnym komunikatem uraczył mnie Eclipse...
Sprawę już omawiałem na blogu (http://wojtek-m.blogspot.com/2009/12/netbeans-i-subversion_20.html), ale wtedy nie poznałem przyczyny takiego zachowania. Teraz starczyło mi na to cierpliwości...
Pokazywanie postów oznaczonych etykietą eclipse. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą eclipse. Pokaż wszystkie posty
wtorek, 25 stycznia 2011
poniedziałek, 17 stycznia 2011
Metoda equals, LSP i Twoje IDE
Jeżeli chodzi o metodę
Przypomnijmy sobie czego Sun (ups, Oracle) wymaga jako "kontraktu" metody
1. Powinna to być relacja równoważności, czyli musi być:
a) zwrotna:
b) symetryczna: jeżeli
c) przechodnia: jeżeli
2. Musi być spójna, tzn. ta sama para
3. I musi też zachodzić:
Przesłaniając metodę
equals(Object obj) w Javie, to wiadomo jedno - wcale nie jest taka trywialna do napisania, zwłaszcza że jednocześnie trzeba pamiętać o hashCode(). Na szczęście nowoczesne IDE takie jak Eclipse czy NetBeans potrafią same wygenerować poprawną parę tych metod. Ale czy aby na pewno?Przypomnijmy sobie czego Sun (ups, Oracle) wymaga jako "kontraktu" metody
equals (http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html#equals%28java.lang.Object%29):1. Powinna to być relacja równoważności, czyli musi być:
a) zwrotna:
x musi być równe x,b) symetryczna: jeżeli
x=y, to y=x,c) przechodnia: jeżeli
x=y i y=z, to x=z2. Musi być spójna, tzn. ta sama para
x i y musi zawsze dawać ten sam wynik.3. I musi też zachodzić:
x != nullPrzesłaniając metodę
equals trzeba pamiętać o wszystkich pięciu warunkach - na szczęście naszej pamięci przychodzą na pomoc nowoczesne IDE :)
Subskrybuj:
Posty (Atom)