使用Kryo时为什么会出现此NullPointerException?

Óla*_*age 1 java nullpointerexception kryo

这是我正在使用的完整代码.

Kryo kryo = new Kryo();
kryo.register(PlayerPOJO.class);
ByteBuffer buffer = ByteBuffer.allocateDirect(256);

PlayerPOJO pojo = new PlayerPOJO(1.0f, 1.0f);

kryo.writeObject(buffer, pojo);

PlayerPOJO player = kryo.readObject(buffer, PlayerPOJO.class);

System.out.println(player.getX() + ":" + player.getY());
Run Code Online (Sandbox Code Playgroud)

PlayerPOJO类只有两个浮点数和get方法.

我得到的错误是:

java.lang.NullPointerException在......

奇怪的是,这是来自Kryo站点的示例代码.我也曾尝试使用readClassAndObjectwriteClassAndObject具有同样的错误.

我试图谷歌错误,但没有与此错误和Kryo​​相关的结果.关于Kryo的信息很少,这是关于Kr​​yo的第四个问题.

Jon*_*eet 7

它不完全是示例代码...因为示例代码有一个"..."表示您通常会做其他工作.

麻烦的是,你永远不会"翻转"你的字节缓冲区,因此它不会读取你刚才写的数据.我强烈怀疑,如果您将代码更改为:

// Code as before...
kryo.writeObject(buffer, pojo);

// This call is all that's new
buffer.flip();

PlayerPOJO player = kryo.readObject(buffer, PlayerPOJO.class);
// Code as before...
Run Code Online (Sandbox Code Playgroud)

......它可能只是工作.有效翻转的调用意味着下一次读取将读取您刚写入的数据.顺便说一句,调用flip 确实发生在一些示例代码中 - 仔细看看.