2013-10-14 3 views
1

나는 일종의 혼란 스럽다. 내가 타일과 플레이어로 구성된 게임을 가지고 있다고 가정 해 봅시다. 이 모든 객체를 저장해야 나중에 게임을 시작하고 상태를 복원 할 수 있습니다. XML 파일이나 일반 텍스트 파일과 같은 단순한 파일로 이미이 작업을 수행합니다. 여기서는 파일에 타일 유형과 좌표를 인쇄 한 다음 나중에 읽고 텍스트 파일의 정보를 기반으로 새 개체를 구문 분석하고 만듭니다.Java 직렬화와 일반 텍스트 파일

내 질문에 왜 속성을 텍스트 파일에 저장할 수있을 때 객체를 직렬화해야합니까? 많은 게임이 텍스트 파일을 사용하여 객체를 직렬화합니까? 이점이 있습니까? 직렬화는 객체의 인스턴스를 저장하므로 나중에 텍스트 파일을 사용해야하는 것처럼 객체의 새 인스턴스를 만들 필요가 없다고 생각할 수 있습니다. 그러나 나는 정말로 모른다.

+3

개체를 직렬화하고 있습니다. 라이브러리/프레임 워크를 사용하는 것보다 스스로 직접 작업하는 것입니다. – tom

+0

직렬화에는 큰 이점이 없으며 매우 장황 할 수 있습니다. CSV, XML, JSON 등 일종의 "구조화 된"파일을 사용하는 것이 가장 좋습니다. JSON은 자바 객체에서 /로 변환 할 수있는 훌륭한 도구이기 때문에 매력적인 선택입니다 (사소한 학습 곡선 임). –

답변

1

자바에서 직렬화의 주요 이점은 지금하고있는 것처럼 수동으로 파일을 읽고 쓸 필요가 없다는 것입니다. Serializable 인터페이스를 구현하기 만하면 Java가 처리합니다. 여기

는 자바 직렬화를 사용하는 좋은 튜토리얼입니다 : 나는 직렬화 따라서는 해당 텍스트보다 적은 공간을 사용합니다, 바이너리 형식으로 내용을 쓸 것 같아요 http://www.tutorialspoint.com/java/java_serialization.htm

1
  1. 당신이 할 수있는 직렬화 된 파일에서 직접 자바 객체를 가져옴

  2. 직렬화를 사용할 때 정적 변수 상태가 저장되지 않음

+0

포인트 1은 매우 의심 스럽지만 Java 직렬화 된 객체는 일반적으로 간단한 사용자 정의 양식보다 (항상?) 더 깁니다 (http://stackoverflow.com/q/18700347/839128 참조). OP 3과 같은 사용자 지정 직렬화는 정적 필드를 저장할지 여부를 선택할 수 있기 때문에 Point 3도 문제가됩니다. – MikeFHay

0
  1. 버전이 UID를 통해 제어됩니다.
  2. 빠름.
  3. 추가 코드가 필요하지 않습니다.