我一直试图设置一些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;
}
}
问题是没有返回null对象,我得到一个完全实例化的对象,其中所有值都设置为null(就像使用无参数构造函数创建对象一样)。
所以在这种情况下,我会在其中找到一个带有[stuff = null]的对象:
@Test
void takeObjectFromSpace() {
Object object = new Object("HelloWorld");
objectInteration.simpleWriteObject();
System.out.println(objectInteraction.readObject().getStuff());
}
实际上,如果空间中没有任何东西,它应该返回一个完整的空对象,但它不会。
有没有人有任何想法?
答案 0 :(得分:1)
(找到我自己的问题的解决方案。)
实现Entry的所有对象必须将其所有变量都设置为Public。