Java 如何在Kryonet中注册枚举类?
我试图注册我的课程,以便通过网络发送信息。我需要注册一个如下所示的枚举类:Java 如何在Kryonet中注册枚举类?,java,networking,enums,kryonet,Java,Networking,Enums,Kryonet,我试图注册我的课程,以便通过网络发送信息。我需要注册一个如下所示的枚举类: 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 S
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;
}
}
我试图通过网络发送我的整个游戏板,这要求我注册我的板中包含的所有子类。主要问题是,我在尝试注册枚举时遇到了问题
这就是我在网络课上所做的:
// 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)
我是否注册的枚举不正确?有没有关于我如何正确地做到这一点的想法
谢谢 我实际上没有在kryo中使用过枚举,但是由于它们的值可以简化为一个数字(序数),因此您可以编写自己的序列化程序来实现这一点。不过,我会研究一下,如果它能开箱即用,那就太好了。
顺便说一句,如果没有第一行说明抛出了什么异常,堆栈跟踪就没有多大用处。这看起来像一个Kryo问题。这是页面。我一直在看它,但我找不到任何关于枚举的信息!我不可能是唯一有这个问题的人