1

我一直在尝试设置一些 JavaSpaces 的东西,但我遇到的问题很奇怪。

假设这是我试图放置的对象(在这种情况下不使用 Object,只是试图混淆/概括):

import net.jini.core.entry.*;

public class Object implements Entry {
   private String stuff;

   public Object() {}

   public Object ( String s) {
      stuff = s;
   }    

   public String getStuff() { return this.stuff; }
}

这是写方法:

public void simpleWriteObject(Object object)
{
    try {
        space.write(object, null, 10000);
    } catch (Exception e)
    {

    }
}

(我已经尝试了多种写入方法,包括声称已成功提交的完整事务。)

现在读的是:

public Object readObject()
{
    JavaSpace space = getSpace();

    Object objectTemplate = new Object();

    try {
        Object object = (Object) space.read(objectTemplate, null, LONG.TIME);
        return object;
    } catch (Exception e)
    {
        System.out.println("An error occurred. Error: " + e);
        return null;
    }
}

问题是没有返回一个空对象,我得到一个完全实例化的对象,所有值都设置为空(就好像该对象是使用无参数构造函数创建的)。

所以在这种情况下,我会得到一个带有 [stuff = null] 的对象:

@Test
void takeObjectFromSpace() {
    Object object = new Object("HelloWorld");
    objectInteration.simpleWriteObject();
    System.out.println(objectInteraction.readObject().getStuff());
}

实际上,如果空间中没有任何内容,它应该返回一个完整的空对象,但事实并非如此。

有没有人有任何想法?

4

1 回答 1

1

(找到了我自己问题的解决方案。)

所有实现 Entry 的对象都必须将其所有变量都设为 Public。

于 2018-01-11T09:37:09.767 回答