Hessian将java.lang.Character反序列化为String

时间:2012-04-04 13:04:29

标签: java serialization hessian

我已经使用了Hessian一段时间,但只是注意到以下行为。如果在Hessian中序列化java.lang.Character,它会反序列化为String。

public class TestHessianChar {
    public static void main(String... args) throws IOException {
        // Serialize
        Character c = new Character('x');
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        Hessian2Output hessian2Output = new Hessian2Output( byteArrayOutputStream );
        hessian2Output.startMessage();
        hessian2Output.writeObject(c);
        hessian2Output.completeMessage();
        hessian2Output.close();
        byte[] dataBytes = byteArrayOutputStream.toByteArray();

        // Deserialize
        Hessian2Input hessian2Input = new Hessian2Input( new ByteArrayInputStream(  dataBytes ) );
        hessian2Input.startMessage();
        Object o = hessian2Input.readObject();
        hessian2Input.completeMessage();
        hessian2Input.close();

        System.out.println(o.getClass().getName());
    }
}

此代码的输出为:

java.lang.String

我认为它与基元的语言无关序列化有关,但它相当烦人。我正在编写一个JMS驱动程序,需要区分char和String,因为规范需要不同的行为。我正在考虑编写自己的类来代表一个char(并放弃自动装箱),但我想知道是否有一种正确的方法让Hessian在开始经历这样的扭曲之前将角色视为一个角色。

0 个答案:

没有答案