如何在java中与客户端和服务器共享枚举

如何在java中与客户端和服务器共享枚举,java,enums,client-server,shared-libraries,Java,Enums,Client Server,Shared Libraries,我正在尝试找出与服务器和客户端共享枚举的最佳实践,这些枚举将始终保存完全相同的数据。我知道,如果我只是简单地将代码复制并粘贴到服务器拥有的客户机中,那么它将不起作用,但是我将如何在两者之间共享这个对象的“库” 例如: public enum Misc { BAG ("Bag", 10, 1), MAP ("Map", 10, 1), SCROLL ("Sroll", 10, 1), WAND ("Wand", 10, 1), POT

我正在尝试找出与服务器和客户端共享枚举的最佳实践,这些枚举将始终保存完全相同的数据。我知道,如果我只是简单地将代码复制并粘贴到服务器拥有的客户机中,那么它将不起作用,但是我将如何在两者之间共享这个对象的“库”

例如:

public enum Misc
{
    BAG     ("Bag", 10, 1),
    MAP     ("Map", 10, 1),
    SCROLL  ("Sroll", 10, 1),
    WAND    ("Wand", 10, 1),
    POTION  ("Potion", 10, 1);

    private String name;
    private int value;
    private double weight;

    Misc(String name, int value, double weight)
    {
        this.name = name;
        this.value = value;
        this.weight = weight;
    }

    public String getName() { return this.name; }
    public int value() { return this.value; }
    public double weight() { return this.weight; }
}
我将通过网络发送这些枚举,例如通过网络将Misc.BAG.toString()从服务器发送到客户端。在客户端上,我需要将收到的字符串转换回客户端上的Misc.BAG。将Items.jar作为具有相同枚举的库,并使用Misc.ValueOf()将其转换回枚举是否有效?当我在谷歌上搜索一些人说“是”和“否”时,我得到了有争议的答案


如果我不能做前者,我将如何在客户端和服务器之间对枚举进行简单引用?

在两个应用程序中都使用该类有什么不对?只需创建一个包,该包将同时包含在客户端和服务器中。

我不了解java,但在C#中,您通常会将它们放入一个公共程序集(dll)中,然后从客户端和服务器应用程序中引用。我也研究了该路径。有人问了一个类似的问题,这是否可行,回答基本上是“您不能这样做,因为JVM上的枚举的生命周期只有一次,并且不会为查找保持一致的值”,但是我不知道这是否正确。我一直认为枚举的整个点基本上是一个常数,有一组特定的值。你想分享代码吗?(可能打包到“shared.jar”中)或者您正在尝试通过客户端/服务器连接发送枚举变量的值?(序列化/反序列化)@Patrick请看一看,它可能有助于您理解您可能遇到的枚举问题的单个实例heard@Patrick你在问题中发布的链接与你说的完全相反。它基本上说明了枚举(反)序列化是通过Java标准序列化API工作的。所以我认为你应该重新设计你的问题,把更多的注意力放在你真正想做的事情上(在代码层面上),而不是抽象的问题上,就在你之前,我找到了一个用于推理/研究的方法。我会尽可能清楚地说:我如何在客户端和服务器之间共享一组枚举,当引用通过网络传输时,这些枚举将保留准确的值。我将通过网络发送枚举的UID,这些值在客户端和服务器上非常匹配。@Patrick您是指枚举对象还是枚举类(代码)?对象,但我用我将尝试实现的确切过程更新了我的问题。。。