Game
개체를 서버에서 GWT의 클라이언트로 보내려고합니다. 이 게임의 목적은 단순히 Player
의 목록이 포함되어GWT - 수퍼 클래스로 직렬화
public class Game implements Serializable {
private List<Player> players;
}
Player
는 이름, 남은 수명처럼, 플레이어의 상태를 포함하는 간단한 뽀조는 등
public class Player implements Serializable {
private String name;
private int numberOfGamesPlayed;
private double hp, initialHp;
}
그러나 게임을 할 수 또한 CpuPlayer
를 포함하는 추가적인 인공 지능 논리를 갖는 Player
입니다
public class CpuPlayer extends Player {
private PlayerIntelligence intelligence; // Not serializable
}
모두 Game
및 Player
개체가 내 "공유"패키지에 있으며 서버 및 클라이언트 측에서 사용해야합니다.
그러나 CpuPlayer
에는 많은 내부 처리 데이터가 포함되어 있으며 순전히 서버 측입니다. 따라서 GWT serialization 허용 목록에 포함되지 않습니다.
CpuPlayer
을 Player
으로 클라이언트에 보내려고합니다. 즉, 직렬화 중에 모든 하위 클래스 특수성을 마스킹합니다.
이 접근 방식이 효과적입니까? 그렇게 할 수있는 방법이 있습니까? 나는 커스텀 직렬화를 보았지만, 그렇게하지는 않았다 (모든 필드를 하나씩 순차적으로 직렬화해야 할 것이다). 당신의 도움에 대한
감사합니다,
세바스티앙
첫 번째 매핑 방식을 사용했습니다. 서비스를 호출하는 방식을 변경하는 것보다 결과를 보내기 전에 필터를 추가하는 것이 훨씬 쉽습니다. –