考虑以下enums
,哪个更好?它们都可以完全相同的方式使用,但它们的优势是什么?
1.重写抽象方法:
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 */
}
编辑:我真的希望看到一些合理/详尽的答案,以及特定主张的证据/来源。由于缺乏证据,大多数现有的关于性能的答案并不真正令人信服。
您可以提出替代方案,但必须清楚它比所述的更好和/或所述的更差,并在需要时提供证据。