Java HazelCastInstanceWare不适用于嵌套对象

Java HazelCastInstanceWare不适用于嵌套对象,java,hazelcast,Java,Hazelcast,嗯。。在某些情况下,我有一个对象需要在hazelcast实例上执行操作。所以我实现了HazelcastInstanceAware接口,但这似乎不适用于嵌套类 以下内核向控制台输出“null”: 公共类NullError实现可序列化的HazelCastInstanceWare{ 私有瞬态HazelcastInstance实例1; 私有瞬态HazelcastInstance实例2 public static void main(String[] args) throws Exception {

嗯。。在某些情况下,我有一个对象需要在hazelcast实例上执行操作。所以我实现了HazelcastInstanceAware接口,但这似乎不适用于嵌套类

以下内核向控制台输出“null”:

公共类NullError实现可序列化的HazelCastInstanceWare{ 私有瞬态HazelcastInstance实例1; 私有瞬态HazelcastInstance实例2

public static void main(String[] args) throws Exception {
    //new NullError().test();
    new NullError().lala();
}

private void lala() throws Exception {
    instance1 = Hazelcast.newHazelcastInstance();
    instance2 = Hazelcast.newHazelcastInstance();

    IMap<Object, Object> foo = instance1.getMap("foo");
    foo.put("foo", new Foo(instance1));

    ((Callable) instance2.getMap("foo").get("foo")).call();
}

public static class Foo implements Serializable, Callable {
    public Bar bar;

    public Foo(HazelcastInstance instance) {
        bar = new Bar(instance);
    }

    @Override
    public Object call() throws Exception {
        return bar.call();
    }
}

public static class Bar implements Callable, Serializable, HazelcastInstanceAware {
    private transient HazelcastInstance i;

    public Bar(HazelcastInstance instance) {
        this.i = instance;
    }

    @Override
    public void setHazelcastInstance(HazelcastInstance instance) {
        this.i = instance;
    }

    @Override
    public Object call() throws Exception {
        System.out.println(i);
        return null;
    }
}
publicstaticvoidmain(字符串[]args)引发异常{
//新建NullError().test();
新的NullError().lala();
}
私有void lala()引发异常{
instance1=Hazelcast.newHazelcastInstance();
instance2=Hazelcast.newHazelcastInstance();
IMap foo=instance1.getMap(“foo”);
foo.put(“foo”,新foo(实例1));
((可调用)instance2.getMap(“foo”).get(“foo”)).call();
}
公共静态类Foo实现可序列化、可调用{
公共酒吧;
公共Foo(HazelcastInstance){
bar=新的bar(实例);
}
@凌驾
公共对象调用()引发异常{
返回条.call();
}
}
公共静态类栏实现可调用、可序列化、HazelCastInstanceWare{
私人暂住哈泽尔卡斯特一号;
公共酒吧(HazelcastInstance){
this.i=实例;
}
@凌驾
公共无效setHazelcastInstance(HazelcastInstance实例){
this.i=实例;
}
@凌驾
公共对象调用()引发异常{
系统输出打印LN(i);
返回null;
}
}
}


本文档未提及HazelCastInstanceWare仅适用于根对象。。有什么想法吗?这是一个Bug吗?

HazelCastInstanceWare只在要反序列化的根对象上工作。我们不研究实现此接口的实例的对象图。

啊,好的,我明白了。我现在使用的解决方法是在保存当前实例的类中使用静态变量(如果为null,则创建一个新实例)