这有什么区别:
public enum Direction {
NORTH(90),
EAST(0),
SOUTH(270),
WEST(180);
private final int degree_;
private Direction(int degree) {
degree_ = degree;
}
public int getDegree() {
return degree_;
}
public static void main(String[] args) {
System.out.println(NORTH.getDegree());
}
}
Run Code Online (Sandbox Code Playgroud)
还有这个:
public enum Direction {
NORTH,
EAST,
SOUTH,
WEST;
public static void main(String[] args) {
EnumMap<Direction, int> directionToDegree = new EnumMap<Direction, int>(Direction.class);
directionToDegree.put(NORTH, 90);
directionToDegree.put(EAST, 0);
directionToDegree.put(SOUTH, 270);
directionToDegree.put(WEST, 180);
System.out.println(directionToDegree.get(NORTH));
}
}
Run Code Online (Sandbox Code Playgroud)
一个人更容易阅读吗?一个人更灵活吗?是否更常用?一个人跑得快吗?还有其他优点和缺点吗?
EnumMap当您想要将附加数据附加到enum您不拥有的数据时,主要用例是.通常,您使用的是具有枚举的公共库,您需要使用数据注释每个成员.
作为一般规则,只要您可以使用这两种方法,请使用第一种方法.
第一种情况是你有一个属性绑定到enum值(只有一个值).
第二个你有值与外部管理的枚举关联.
想象一下,现在在您的应用程序中,您想要访问这些值.如果在第二种情况下这是恒定的,那么从任何地方引用地图将会复杂得多.
当您有不同的上下文时,第二种方法会很有用.例如:NORTH在特定的上下文中NORTH应该是90,但在另一个上下文中,需要另一个与之关联的值(这里的上下文可以是特定的实现).
将值添加到枚举常量本身使它们可用,而无需引用另一个对象.如果将此信息存储在地图中,则必须将引用传递给地图.如果这些是常量表示的概念的基本属性,则最好将值添加到常量本身而不是将它们存储在映射中.
使用枚举常量上的值比将它们存储在地图中要快.
| 归档时间: |
|
| 查看次数: |
2716 次 |
| 最近记录: |