JavaSpaces - объекты, возвращающие (оба считывают / принимают) со всеми значениями, равными NULL

Я пытался настроить некоторые вещи 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());
}

В действительности, если в пространстве ничего нет, он должен вернуть полный нулевой объект, но это не так.

У кого-нибудь есть какие-либо идеи?

1 ответ

Решение

(Нашел решение моего собственного вопроса.)

Все объекты, которые реализуют Entry, должны иметь все свои переменные как Public.

Другие вопросы по тегам