java의 게임에 UDP 소켓을 사용하여 클라이언트 서버 프로토콜을 구현하고 있습니다. 서버에서 입력을 처리하고 플레이어 및 기타 게임 개체가 포함 된 Level 개체를 업데이트하는 서버로 클라이언트의 사용자 입력을 보냅니다. 레벨 객체 (크기를 유지하는 임시 속성 포함)를 직렬화하여 클라이언트에 보냅니다. 서버로부터 수신 한 Level 객체가 일시적인 속성에 null 값을 가지므로 서버에서받은 Level 객체를 클라이언트에 병합하려고합니다. 완전하고 최신 수준의 개체를 수동으로 재구성하는 것 이외에 다른 작업을 수행하는 좋은 방법이 있습니까? 감사!원본이있는 deserialize 된 객체 병합
0
A
답변
1
객체가 자신의 속성에 대한 getter와 setter가있는 "표준"Java Bean이라고 가정하면 Spring은 BeanUtils class에 몇 가지 유틸리티 메소드를 제공합니다. 두 방법 모두 copyProperties
으로 이름이 지정되며 둘 다 한 개체에서 다른 개체로 속성을 복사하기위한 것입니다. One of the methods은 등록 정보의 화이트리스트를 지정하고 the other은 블랙리스트를 지정할 수 있습니다. 이러한 방법으로, 당신은 인터페이스 또는 당신을 위해 하나가 또는 서버에서 수신 레벨에 복사하지 말아야하고 복사가 수행 한 속성의 목록을 정의 할 수 있습니다 - 같은 :
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"});
관련 문제
- 1. 중첩 된 객체 병합
- 2. jsonmodel deserialize 객체
- 3. 중첩 된 json 객체 병합
- 4. JSON - 클래스에 다중 객체 deserialize
- 5. 병합 객체
- 6. ArrayList 확장 및 생성자에서 deserialize 된 객체 참조
- 7. OpenJpa 병합 분리 객체
- 8. C# Deserialize 중첩 된 json
- 9. 런타임에 생성 된 클래스를 Deserialize
- 10. 잭슨과 보호 된 생성자를 deserialize
- 11. 도메인 객체 목록 병합
- 12. Django에서 QuerySetValues 객체 병합
- 13. 병합 주어진 객체
- 14. id로 객체 병합 JavaScript
- 15. JavaScript 객체 병합
- 16. 두 데이터 객체 병합
- 17. Java에서 두 객체 병합
- 18. C#을 병합 객체
- 19. 가장 좋은 방법은 병합 병합 취소 객체
- 20. 영속 객체 병합 또는 업데이트
- 21. Deserialize JSON
- 22. JSON 사전이 포함 된 사전을 serialize/deserialize
- 23. 병합 된 병합 정렬 Java
- 24. 병합 병합 된 문서 확인
- 25. 안드로이드 hashMap deserialize
- 26. 두 개의 JavaScript 객체 병합
- 27. PHP 배열과 PHP 객체 병합
- 28. Eclipselink는 병합 된 객체와 병합/지속됩니다.
- 29. 병합 분리 된 객체 (실제 경우에 getter 및 setter가)
- 30. 새로 deserialize 된 객체의 종속성 다시 적용
감사합니다. Ryan, Ill.이 시도해보십시오. – Chris