gpt4 book ai didi

java - 将反序列化的对象与其原始对象合并

转载 作者:行者123 更新时间:2023-12-01 14:48:05 25 4
gpt4 key购买 nike

我正在使用 UDP 套接字为 Java 游戏实现客户端服务器协议(protocol)。我将用户输入从客户端发送到服务器,服务器处理输入并更新包含玩家和其他游戏对象的关卡对象。我正在序列化关卡对象(其中还包含 transient 属性以减小大小)并将其发送到客户端。我想将从服务器接收到的 Level 对象与客户端上的 Level 对象合并,因为从服务器接收到的 Level 对象的 transient 属性将为空值。除了手动重建完整且最新的级别对象之外,还有其他好方法吗?谢谢!

最佳答案

假设您的对象是“标准”java bean,其属性具有 getter 和 setter,Spring 在其 BeanUtils class 中有几个实用方法。这可能有帮助。这两种方法都被命名为copyProperties,并且都用于将属性从一个对象复制到另一个对象。 One of the methods允许您指定属性白名单和 the other让您指定黑名单。使用这些方法,您可以定义应该或不应该复制到从服务器接收的关卡上的接口(interface)或属性列表,然后为您完成复制 - 类似于:

interface LevelPropertiesToMerge {
void setPropertyOne(String something);
void setPropertyTwo(int somethingElse);
}

// serialization code on client
Level fromServer = ...;
Level fromClient = ...;
BeanUtils.copyProperties(fromClient, fromServer, LevelPropertiesToMerge.class);

或者:

// serialization code on client
Level fromServer = ...;
Level fromClient = ...;
BeanUtils.copyProperties(fromClient, fromServer,
new String[] {"propertyOneToIgnore", "propertyTwoToIgnore"});

关于java - 将反序列化的对象与其原始对象合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15194233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com