ネットワーク経由で情報を送信するためにクラスを登録しようとしています。次のような Enum クラスを登録する必要があります。
public enum Fort{
NOFORT("No Fort", 0, 0), TOWER("Tower", 1, 1), KEEP("Keep", 2, 2), CASTLE("Castle", 3, 3), CITADEL("Citadel", 4, 4);
protected int combatValue;
protected int income;
protected String name;
private Fort(String n, int c, int i){
name = n;
combatValue = c;
income = i;
}
public int getFortIncome(){
return income;
}
public int getComatValue(){
return combatValue;
}
}
ゲーム ボード全体をネットワーク経由で送信しようとしていますが、ボード内に含まれるすべてのサブクラスを登録する必要があります。主な問題は、列挙型を登録しようとすると、II がスタックすることです。
これは、私がネットワーキングのクラスで行っていることです。
// tell Kryo what things it's going to have to send
private void registerClasses(Kryo kryo) {
kryo.register(Request.class);
kryo.register(PacketMessage.class);
kryo.register(Fort.class);
kryo.register(ArrayList.class);
kryo.register(Tile.class);
kryo.register(Board.class);
}
Fort.class を登録しようとすると、次のような一連のエラーが発生します。
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
列挙型を間違って登録していますか? これを適切に行う方法についてのアイデアはありますか?
ありがとう!