Я использую NamedCache.get(cacheKey)
и NamedCache.put(cacheKey, cacheValue)
и первостепенную hashCode
и equals
метод в cacheKey
объекта, также делает cacheKey
объект Serializable. Но метод hashCode
и equals
не вызван.Как переопределить методы hashCode и equals в сериализованном объекте?
Почему это происходит?
Я отправляю код образца для указанного выше вопроса
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import com.tangosol.net.CacheFactory;
import com.tangosol.net.NamedCache;
class HelloEx implements Serializable {
/**
*
*/
private static final long serialVersionUID = 6280029994647038136L;
String str = "HelloEx" ;
HelloEx(String s){
str = s ;
}
public int hashCode() {
System.out.println("Inside HashCode");
return 1;
}
public boolean equals(Object o) {
HelloEx s = (HelloEx)o ;
if(str.equals(s.str)){
System.out.println("Both are equal");
return true;
}
return false;
}
}
public class HashSetEg {
public static void main(String[] args) {
HelloEx hEx4 = new HelloEx("Four");
HelloEx hEx5 = new HelloEx("Five");
HelloEx hEx6 = new HelloEx("Six");
Map hp = new HashMap();
hp.put(hEx4,hEx4);
hp.put(hEx5,hEx5);
hp.put(hEx6,hEx6);
hp.put(hEx6,hEx6);
System.out.println("Test");
hp.get(hEx6);
hp.put(new String("aa"),new String("aa"));
System.out.println("Test");
//System.out.println("HashSet " + hp );
NamedCache aggCache = CacheFactory.getCache("MyCache");
aggCache.put(hEx4,hEx4);
aggCache.put(hEx6,hEx6);
aggCache.put(hEx6,hEx6);
System.out.println("End");
}
}
Выход для приведенного выше кода:
Внутри HashCode
Внутри HashCode
Внутри HashCode
Внутри HashCode
Тест
Внутри HashCode
Тест
Конец
Этот код использует когерентности оракула technology.So NamedCache представляет собой интерфейс внутри coherence.jar, который используется для сохраните ссылку на созданный кеш на сервере когерентности, который будет использоваться приложением, и «CacheFactory.getCache (« MyC боль «)» используется для создания кэша на когерентной сервере с именем MyCache и в этом кэше мы храним пар ключ-значение так же, как мы храним данные в HashMap
Не могли бы вы высказать свой код? – MoondogsMaDawg
Я боюсь, что я не могу опубликовать фактический код здесь. Как на моих клиентах VM (недоступен отсюда). – Rajnish
вы наверняка можете. Создайте [mcve] (/ help/mcve) и вставьте это (убедитесь, что это действительно mcve). Важно то, что вы прилагаете все усилия, чтобы четко объяснить, что вы делаете, что в этом случае * очень важно * включить код, даже если это не буквально код, который у вас есть, - пока он проявляет ту же проблему что вам нужно решить после сокращения. –