Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 枚举类副本_Java - Fatal编程技术网

Java 枚举类副本

Java 枚举类副本,java,Java,我有两个枚举类,其中有相同类型的元素。如何将值从A类复制到B类 public enum A{ EAST, WEST, NORTH, SOUTH; } public enum B{ EAST, WEST, NORTH, SOUTH; } 您可以这样做: A a = A.EAST; B b = B.valueOf(a.name()); 或者在下面的评论中 B b = B.valueOf(A.EAST.name()); 取决于您在代

我有两个枚举类,其中有相同类型的元素。如何将值从A类复制到B类

public enum A{
    EAST,
    WEST,
    NORTH,
    SOUTH;
}
public enum B{
    EAST,
    WEST,
    NORTH,
    SOUTH;
}

您可以这样做:

A a = A.EAST;
B b = B.valueOf(a.name());
或者在下面的评论中

B b = B.valueOf(A.EAST.name());

取决于您在代码中使用enum的方式。

让一个enum实现两个接口怎么样

enum A implements Side, Direction {
   ...
}
还是一个由两个事物组成的枚举

enum A  {
   public Side asSide(){return side;}
   public Direction asDirection(){return direction;}
   ...
}

使用ant任务将
A.java
复制到
B.java
,并用
enum B
替换
enum A

您还可以使用bash执行此操作:

sed -r -e 's@enum\s+A\b@enum B@g' A.java >  B.java
现在,由于两个
enum
意味着相同,您可能应该使用两个类来包装它们:

  • 你不会做这种丑恶的事
  • 如果您使用
    EnumC
    使用
    WrapperA
    WrapperB
    ,则以后可以使用
    WrapperA
    hold
    EnumA
    WrapperB
    hold
    EnumB

这样做比让一些晦涩难懂的任务做脏活更容易维护:编译和版本控制也会让你受益。

不,你不能。为什么,为什么你需要这样做?@Dave Newton可能是类需要有一些映射。这看起来像。考虑一下为什么你认为你需要做这样的事情,所以我们可以找到一些可能的替代方案,因为你所描述的几乎是不可能的。创建一个包装器,我不能触摸现有的A类,所以B类可以在明天有更多的元素。B=B.valueOf(A.WEST.name());B=B.valueOf(A.NORTH.name());B=B.valueOf(A.SOUTH.name());~我需要像这样复制每个值吗?