문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
java:kryo [2015/06/22 17:08] kwon37xi [기본 생성자(No args constructor)가 없을 경우] |
java:kryo [2016/01/08 20:20] (현재) kwon37xi [기본 생성자(No args constructor)가 없을 경우] |
||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| ====== Kryo - Java 직렬화(Serialization) ====== | ====== Kryo - Java 직렬화(Serialization) ====== | ||
| - | * http://code.google.com/p/kryo/ | + | * https://github.com/EsotericSoftware/kryo |
| * Java 객체 직렬화 솔루션. | * Java 객체 직렬화 솔루션. | ||
| * Java Serialization의 단점인 서로 다른 버전의 직렬화를 더 잘 지원하는듯. | * Java Serialization의 단점인 서로 다른 버전의 직렬화를 더 잘 지원하는듯. | ||
| 줄 93: | 줄 93: | ||
| * 순수 Kryo만 사용할 때는 objenesis의 '' | * 순수 Kryo만 사용할 때는 objenesis의 '' | ||
| Kryo kryo = new Kryo(); | Kryo kryo = new Kryo(); | ||
| + | |||
| + | // 먼저 기본 생성자로 객체 생성을 시도하고, | ||
| + | // 실패시에 생성자 없이 객체 생성시도하는 설정. | ||
| kryo.setInstantiatorStrategy(new Kryo.DefaultInstantiatorStrategy(new StdInstantiatorStrategy())); | kryo.setInstantiatorStrategy(new Kryo.DefaultInstantiatorStrategy(new StdInstantiatorStrategy())); | ||
| </ | </ | ||
| 줄 101: | 줄 104: | ||
| </ | </ | ||
| + | ===== Enum ===== | ||
| + | Kryo 기본적으로 Enum을 ordinal로 직렬화한다. 이 경우 Enum의 순서가 변경되면 문제가 발생한다. | ||
| + | '' | ||
| + | <code java> | ||
| + | kryo.addDefaultSerializer(Enum.class, | ||
| + | </ | ||