考虑下面的枚举,哪个更好?他们都可以使用完全相同的方式,但他们的优势是什么?
覆盖抽象方法:
public enum Direction {
UP {
@Override
public Direction getOppposite() {
return DOWN;
}
@Override
public Direction getRotateClockwise() {
return RIGHT;
}
@Override
public Direction getRotateAnticlockwise() {
return LEFT;
}
},
/* DOWN, LEFT and RIGHT skipped */
;
public abstract Direction getOppposite();
public abstract Direction getRotateClockwise();
public abstract Direction getRotateAnticlockwise();
}
2.使用单一方法:
public enum Orientation {
UP, DOWN, LEFT, RIGHT;
public Orientation getOppposite() {
switch (this) {
case UP:
return DOWN;
case DOWN:
return UP;
case LEFT:
return RIGHT;
case RIGHT:
return LEFT;
default:
return null;
}
}
/* getRotateClockwise and getRotateAnticlockwise skipped */
}
编辑:我真的希望看到一些很好的理性/详细的答案,有特定的索赔的证据/来源.由于缺乏证据,大多数关于绩效的现有答案并不真正令人信服.
您可以提出替代方案,但必须明确的是,它比所说明的更好,和/或说明的更糟糕,并在需要时提供证据.