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.