我有一个具有主要方向的枚举课程(北,东,南,西):
public enum Direction { NORTH,EAST,SOUTH,WEST; }
有没有办法能够使用同一个东西的多个名字?例如这样的:
public enum Direction { NORTH or N,EAST or E,SOUTH or S,WEST or W; }
实际上,我想要的是能够并且向N或NORTH的变量签名,并且这两个操作是完全相同的.
例:
Direction direction1=new Direction.NORTH; Direction direction2=new Direction.N; //direction1==direction2
解决方法
public enum Direction { NORTH,WEST,; // Convenience names. public static final Direction N = NORTH; public static final Direction E = EAST; public static final Direction S = SOUTH; public static final Direction W = WEST; }
是合法的,但是“N”不能与自动生成的valueOf方法一起使用.即Direction.valueOf(“N”)将抛出一个IllegalArgumentException而不是返回Direction.NORTH.
你也不能写案例N:.您必须在其值为“方向”的开关中使用全名.
除此之外,缩写形式应该与完整版一样工作.您可以在EnumSets中使用Direction.N,将其比较为Direction.N == Direction.NORTH,获取其名称()(即“NORTH”),导入静态yourpackage.Direction.N等.