1

これが私が使用しているコード全体です。

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());

PlayerPOJO クラスには、2 つの float とそれらの get メソッドしかありません。

私が得ているエラーは次のとおりです。

java.lang.NullPointerException at ...

奇妙なことに、これは Kryo サイトのサンプル コードです。私も使用しようreadClassAndObjectwriteClassAndObjectしましたが、同じエラーが発生しました。

エラーをググってみましたが、このエラーと Kryo に関連する結果はありません。Kryo に関する情報がほとんどないため、これは SO 上の Kryo に関する 4 番目の質問です。

4

1 に答える 1

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...

...うまくいくかもしれません。Flip の呼び出しは、次の読み取りで、書き込んだばかりのデータが読み取られることを意味します。ところで、いくつかのサンプル コードでへの呼び出しが行われてflip います。よく見てください。

于 2011-06-11T20:07:19.133 に答える