【发布时间】:2016-09-26 22:01:19
【问题描述】:
我有以下代码:
public static String encode(Object object)
{
final String result;
try (ByteArrayOutputStream bOut = new ByteArrayOutputStream();
Output output = new Output(bOut))
{
KRYO.writeObject(output, object);
output.flush();
result = Base64.getUrlEncoder().encodeToString(bOut.toByteArray());
} catch (IOException e)
{
// Do nothing, should never happen!
throw new RuntimeException("MEGA FAIL");
}
return result;
}
public static String encodeTest(Object object)
{
final String result;
try (ByteArrayOutputStream bOut = new ByteArrayOutputStream();
OutputStream base64Out = Base64.getUrlEncoder().wrap(bOut);
Output output = new Output(base64Out))
{
KRYO.writeObject(output, object);
output.flush();
result = bOut.toString();
} catch (IOException e)
{
// Do nothing, should never happen!
throw new RuntimeException("MEGA FAIL");
}
return result;
}
测试:
String test = "asdf";
System.out.println(encode(test));
System.out.println(encodeTest(test));
给出输出(使用 kryo 记录器):
00:10 TRACE: [kryo] Write: asdf
00:10 TRACE: [kryo] Object graph complete.
YXNk5g==
00:10 TRACE: [kryo] Write: asdf
00:10 TRACE: [kryo] Object graph complete.
YXNk
那么我的代码有错误吗?
我是否滥用了包装器?
是 kryo 的错误吗(用 3.0.3 和 4.0.0 版本测试)?
【问题讨论】:
-
您有重现问题的输入吗?
-
@shmosel 更新了问题。你可以使用任何对象。