我有一个具有主要方向的枚举课程(北,东,南,西):
- 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等.