Android WebView APP + Laravel «Срок действия страницы истек из-за неактивности»

Большинство других комментариев уже дали вам ответ: вам нужно это сделать, потому что есть коллекции (например, HashSet, HashMap), который использует hashCode в качестве оптимизации для «индексирования» экземпляров объекта, эти оптимизации предполагают, что если: a.equals(b) ==> a.hashCode() == b.hashCode() (обратите внимание, что инверсия не выполняется).

Но в качестве дополнительной информации вы можете выполнить это упражнение:

class Box {
     private String value;
     /* some boring setters and getters for value */
     public int hashCode() { return value.hashCode(); }
     public boolean equals(Object obj) { 
           if (obj != null && getClass().equals(obj.getClass()) { 
               return ((Box) obj).value.equals(value); 
            } else { return false; }
     }
}

это:

Set<Box> s = new HashSet<Box>();
Box b = new Box();
b.setValue("hello");
s.add(b);
s.contains(b); // TRUE
b.setValue("other");
s.contains(b); // FALSE
s.iterator().next() == b // TRUE!!! b is in s but contains(b) returns false

Что вы узнали из этого примера, так это то, что реализация equals или hashCode со свойствами, которые могут быть изменены (изменчивые), является действительно плохой идеей.

0
задан kkoss asa 19 March 2019 в 06:52
поделиться