我刚刚开始理解Java中Enumeration的概念,但我仍然对我的理解持怀疑态度。
对于像:Direction这样的东西,我可以理解它的用法,我使用数字来表示方向,但从来不需要用它来算术。
但是,考虑到尺寸是大小的常量,但是我需要做算术,最终声明会更合适吗?或尝试使用
进行枚举public int getSize()
{
return size;
}
这是我当前声明的代码:
private static class Size
{
private static final int BOX = 5; //5 pixels
private static final int GRID = 30; //amount of boxes
private static final int GAME = BOX * GRID; //total size in pixels
}
请注意,这是一个私有嵌套类, 我在绘图时也使用这些值,并且参数是一个整数,我只是做Size.BOX,但是,Enumeration更适合这个吗?我应该怎么做呢?
答案 0 :(得分:2)
整个枚举点是让您的代码更具可读性和可维护性。您应该在需要表示枚举元素集时随时使用它们。
但是,在这种情况下,最终/常量更合适,因为您表示的值(框数和像素数)不是枚举集。例如,如果您想存储各种类型的盒子(金属盒,纸板盒等),那么您将使用枚举。
答案 1 :(得分:1)
您认为枚举在处理算术值时不合适是正确的。枚举对于表示彼此相关的唯一定义项的集合(在编程和数学意义上)非常有用。
使用枚举以这种方式替换大小值在上下文中是无意义的。如果您的商品是30个单位,那么您需要使用整数等来表示。
在类似的上下文中使用枚举的一个示例是,如果您有5种不同大小的严格定义的项目类型 - 在这种情况下,您可以使5中的每一个都成为枚举的实例 - 但它们会内部仍有一个大小变量,每个都有不同的值。
答案 2 :(得分:1)
采取一些界面诡计,但这是有效的。在你的情况下,这不一定是最好的方法,但这是一个很好的小练习。
/**
<P>{@code java EnumXmpl}</P>
**/
public class EnumXmpl {
public static final void main(String[] igno_red) {
System.out.println("BOX: " + eShape.BOX.getSize());
System.out.println("GRID: " + eShape.GRID.getSize());
System.out.println("GAME: " + eShape.GAME.getSize());
}
}
interface ShapeConstants {
int iBOX_PXLS = 5;
int iGRID_BOXES = 30;
}
enum eShape implements ShapeConstants {
BOX(iBOX_PXLS),
GRID(iGRID_BOXES),
GAME(iBOX_PXLS * iGRID_BOXES);
private final int iSz;
eShape(int i_size) {
iSz = i_size;
}
public final int getSize() {
return iSz;
}
}
输出:
[C:\java_code\]java EnumXmpl
BOX: 5
GRID: 30
GAME: 150