@LeftShift: Ciekawostka, dla często używanego zakresu liczb int/long to będzie działać, bo niektóre wartości są umieszczane w puli dla zwiększenia wydajności. Ale pewnie o tym wiesz.
@LeftShift: -128 do 127 do Int, Long, ale tak naprawdę zależy to od zmiennej -Djava.lang.Integer.IntegerCache.high. BigInteger ma zahardkodowany zakres.
@moriturius: Mam wrażenie, że to jest wygenerowane przez lntelliJ. Tam możesz zaznaczyć parę pól, na podstawie których ma być generowany hash, i on wtedy generuje taką sekwencję ifów. Pewnie dla jednego pola nie robi inaczej.
@LeftShift: IntelliJ może generować na kilka sposobów, ale żaden nie robi tego tak źle :)
Ustawienie Java7+:
public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Test test = (Test) o; return Objects.equals(hello, test.hello); }
Ustawienie IntelliJ Default:
public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false;
@LeftShift: Czytając Twój wpis zastanawiałem się co tu jest problemem ;) Czy to, że komentujesz najprawdopodobniej automatycznie generowany kod dla equalsa? Czy sam fakt zabawnego zwracania wartości boolean (który jednak czasami ma rację bytu)? A może chodzi o to, ze ID jest obiektem lub co zabawniejsze - prymitywem w obiekcie (autoboxing) (co jednak nie jest tutaj jednoznacznie określone)?
@Grizwold: Fajne! A teraz będzie tak zwane "badum-tss". Szukając wczoraj tego buga, klęłam motzno na naszego praktykanta, podejrzewanego o implementację tego equals() w BaseEntity, po której dziedziczą wszystkie nasze klasy modelowe. Ale gdy zrobiłam git blame'a wyszło, że...
if (this.getId() != that.getId()) {
return false;
}
#java #programowanie #equals
Komentarz usunięty przez autora
Ale pewnie o tym wiesz.
Ustawienie Java7+:
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Test test = (Test) o;
return Objects.equals(hello, test.hello);
}
Ustawienie IntelliJ Default:
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
A teraz będzie tak zwane "badum-tss". Szukając wczoraj tego buga, klęłam motzno na naszego praktykanta, podejrzewanego o implementację tego equals() w BaseEntity, po której dziedziczą wszystkie nasze klasy modelowe. Ale gdy zrobiłam git blame'a wyszło, że...