组合两个二进制对象
Composing two binary objects
我有两个 BinaryObject
:
BinaryObject bo1;
BinaryObject bo2;
有没有办法组合这两个二进制对象。我的意思是将 bo1
到 bo2
中的所有字段添加到 bo2
中不存在的字段?我试过了
bo1.toBuilder();
bo2.toBuilder();
但我没有找到一种方法将这些构建器组合成我需要的构建器。问题是我不知道这些对象中的字段。
实际上我有缓存 BinaryObject
s 作为值。我正在写 StreamReceiver
以按照我上面指定的方式更新它的值。这样我就必须实现以下方法:
@Override
public void receive(IgniteCache<String, BinaryObject> cache, Collection<Map.Entry<String, BinaryObject>> entries) throws IgniteException {
BinaryObject objOld = cache.get(entry.getKey());
BinaryObjectBuilder previous = objOld.toBuilder();
BinaryObject objNew = entry.getValue();
BinaryObjectBuilder current = objNew.toBuilder();
//...
}
没有单行的。但是您可以从要合并到的对象创建一个构建器,然后在第二个对象上使用 BinaryObject.type().fieldNames()
来获取它包含的字段列表。然后遍历这些字段并将值附加到构建器。
我有两个 BinaryObject
:
BinaryObject bo1;
BinaryObject bo2;
有没有办法组合这两个二进制对象。我的意思是将 bo1
到 bo2
中的所有字段添加到 bo2
中不存在的字段?我试过了
bo1.toBuilder();
bo2.toBuilder();
但我没有找到一种方法将这些构建器组合成我需要的构建器。问题是我不知道这些对象中的字段。
实际上我有缓存 BinaryObject
s 作为值。我正在写 StreamReceiver
以按照我上面指定的方式更新它的值。这样我就必须实现以下方法:
@Override
public void receive(IgniteCache<String, BinaryObject> cache, Collection<Map.Entry<String, BinaryObject>> entries) throws IgniteException {
BinaryObject objOld = cache.get(entry.getKey());
BinaryObjectBuilder previous = objOld.toBuilder();
BinaryObject objNew = entry.getValue();
BinaryObjectBuilder current = objNew.toBuilder();
//...
}
没有单行的。但是您可以从要合并到的对象创建一个构建器,然后在第二个对象上使用 BinaryObject.type().fieldNames()
来获取它包含的字段列表。然后遍历这些字段并将值附加到构建器。