3

ネットワーク経由で情報を送信するためにクラスを登録しようとしています。次のような 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)

列挙型を間違って登録していますか? これを適切に行う方法についてのアイデアはありますか?

ありがとう!

4

1 に答える 1