我有两种不同类型的键:
interface Key extends Serializable {
String getName();
}
class KeyA implements Key {
private String name;
private int fieldA;
}
class KeyB implements Key {
private String name;
private int fieldB;
}
我可以将Key
界面用作 Coherence 分区缓存中的密钥吗?
答案 0 :(得分:1)
实现该接口的类的实例可以在这里用作键。
答案 1 :(得分:1)
是的,但您必须确保Key
的所有可能实施都符合以下先决条件(来自Oracle Documentation):
缓存键还必须提供
hashCode()
和的实现equals()
方法,这些方法必须返回一致的结果 跨群集节点。这意味着执行hashCode()
和equals()
必须完全基于对象 可序列化状态(即对象的非瞬态字段)。...
某些缓存实施(特别是分区缓存)使用 用于等式测试的关键对象的序列化形式,其中 表示
equals()
方法返回true的键必须 序列化相同。
Patrick Peralta有一个很好的article解释了这种行为。