overriding java equals() slight - working?
i ran an engaging (and unequivocally frustrating) emanate equals() slight now caused i guess good tested category wreck means bug took me unequivocally enlarged lane down.
just completeness, i wasn't controlling an ide debugger - only good aged fashioned calm editor system.out's. unequivocally unparalleled propagandize project.
anyhow -
i building simple offering transport enclose an arraylist book objects. method exercise addbook(), removebook(), hasbook() methods cart, i wanted check book already existed cart. off i -
public boolean equals(book b) {
... // some-more formula here - zero checks
(b.getid() == this.getid()) relapse true;
else relapse false;
}
all works glorious testing. i emanate 6 objects fill data. adds, removes, has() operations cart all works fine. i review either have equals(type var) equals(object o) { (cast) var } nonetheless feigned given working, didn't matter too much.
then i ran problem - i indispensable emanate book vigilant only id within book class. information entered it. fundamentally following:
public boolean hasbook(int i) {
book b = new book(i);
relapse hasbook(b);
}
public boolean hasbook(book b) {
// .. some-more formula here
relapse this.books.contains(b);
}
all sudden, equals(book b) slight longer works. took unequivocally enlarged lane down but good debugger presumption cart category morally tested correct. after swaapping equals() slight following:
public boolean equals(object o) {
book b = (book) o;
... // rest goes here
}
everything began work again. there reason slight solid take book parameter even nonetheless clearly book object? wholly inadequacy seemed instantiated within same class, wholly filled information member. i'm unequivocally very confused. please, broadcast light?
Comments
Post a Comment