MessagePack и неизменяемые объекты
У меня есть много неизменных доменных объектов с частными конечными полями и общедоступными методами получения. Можно ли их сериализовать с помощью реализации MessagePack для Java?
Я знаю @Message
аннотация поддерживает только открытые поля, но я надеялся использовать @MessagePackBeans
а также @OrdinalEnum
аннотаций. Когда я пытаюсь сериализовать один из моих объектов, я не получаю никаких исключений .write
вызов, но сериализация не удается. Я включил полный пример ниже.
Есть ли что-то, что я делаю неправильно, или я должен отказаться от попыток использовать MessagePack?
import java.io.IOException;
import org.msgpack.MessagePack;
import org.msgpack.annotation.MessagePackBeans;
import org.msgpack.annotation.OrdinalEnum;
public class MsgPackTest {
@OrdinalEnum
public static enum MyEnum {
A;
}
@MessagePackBeans
public final static class MyObject {
private final String myString;
private final MyEnum myEnum;
public MyObject(String myString, MyEnum myEnum) {
this.myString = myString;
this.myEnum = myEnum;
}
public String getMyString() {
return myString;
}
public MyEnum getMyEnum() {
return myEnum;
}
}
public static void main(String[] args) {
final MyObject obj = new MyObject("abc", MyEnum.A);
final MessagePack msgPack = new MessagePack();
try {
final byte[] bytes = msgPack.write(obj); //bytes = [-112]
MyObject result = msgPack.read(bytes, MyObject.class);
//Unreachable code - MessageTypeException thrown
System.out.println("Success: " + result);
} catch (IOException e) {
e.printStackTrace();
}
}
}