0

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

4

1 回答 1

1

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

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"});
于 2013-03-04T04:03:46.067 回答