Ó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站点的示例代码.我也曾尝试使用readClassAndObject并writeClassAndObject具有同样的错误.
我试图谷歌错误,但没有与此错误和Kryo相关的结果.关于Kryo的信息很少,这是关于Kryo的第四个问题.
它不完全是示例代码...因为示例代码有一个"..."表示您通常会做其他工作.
麻烦的是,你永远不会"翻转"你的字节缓冲区,因此它不会读取你刚才写的数据.我强烈怀疑,如果您将代码更改为:
// 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 确实发生在一些示例代码中 - 仔细看看.